Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Przeslanie i polaczenie plikow tekstowych z dysku
reyne
post
Post #1





Grupa: Zarejestrowani
Postów: 73
Pomógł: 1
Dołączył: 19.12.2007

Ostrzeżenie: (0%)
-----


Witam,


Istota skryptu polega na tym ze mam do łączenia sporą ilość plików tekstowych w jedną całość. Powiedzmy mam plik koloroczu.txt, plik kolorwlosow.txt, plik imie.txt, plik nazwisko.txt. Chcialbym napisac skrypt ktory wczytuje zawartosc tych plikow z pol typu file i wyswietla mi na ekranie badz zapisuje zawartość tych plików jedno pod drugim do jednego pliku (w tym przypadku osoba.txt).

Niestety nie wiem jak wyswietlic po przeladowaniu sie strony przez przycisk submit zawartosc wczytanych plikow.

próbowałem tak:
Kod
<?php
if (fopen($_FILES['userfile']['tmp_name'], 'r')) {

    echo $_FILES['userfile'];
} else {
    echo 'Nie udało się';
}
echo '
<form enctype="multipart/form-data" action="" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="30000" />
Plik do wysłania: <input name="userfile" type="file" />

<input type="submit" value="Wyślij" />
</form>
';
?>


Niestety zamiast zawartosci tego pliku wyswietla mi sie "Array" winksmiley.jpg

Ten post edytował reyne 8.08.2008, 18:55:23
Go to the top of the page
+Quote Post
sticker
post
Post #2





Grupa: Zarejestrowani
Postów: 611
Pomógł: 19
Dołączył: 28.02.2005
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


jak juz słusznie zauważyłeś ($_FILES['userfile']['tmp_name']) jest tablicą tablic,

zrób sobie zamiast echo print_r($_FILES) to sobie zobaczysz o co chodzi


--------------------
Go to the top of the page
+Quote Post
reyne
post
Post #3





Grupa: Zarejestrowani
Postów: 73
Pomógł: 1
Dołączył: 19.12.2007

Ostrzeżenie: (0%)
-----


Kod
<?php

if(isset($_POST['send'])) {

$file = $_FILES['userfile']['tmp_name'];
$uchwyt = fopen($file, 'r');
$tresc = fread($uchwyt, filesize($file));
echo "<br><br>".$tresc."";

}
echo '
<form enctype="multipart/form-data" action="" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="30000" />
Plik do wysłania: <input name="userfile" type="file" /><br>
<input type="submit" value="Wyślij" name="send" />
</form>
';


?>


dzięki za wskazówkę winksmiley.jpg
Kod działa poza jednym wyjątkiem.. jak zrobić żeby rozróżniał nowe linijki w tekście? No i tekst jest w innym formacie, nie ma polskich znaków tylko ogonki, jak go przekonwertować "w locie"? Pliki są w normalnym pliku tekstowym z Notatnika.

Ten post edytował reyne 8.08.2008, 21:34:22
Go to the top of the page
+Quote Post
pyro
post
Post #4





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

Ostrzeżenie: (0%)
-----


parser rozróżnia nowe linijki w tekście, tylko, że są one \n || \r\n, jak chcesz wyswietlic na stronie biorac pod uwage nowe linie, to zrób cos takiego:

  1. <?php
  2.  
  3. if(isset($_POST['send'])) {
  4.  
  5. $file = $_FILES['userfile']['tmp_name'];
  6. $uchwyt = fopen($file, 'r');
  7. $tresc = fread($uchwyt, filesize($file)); 
  8. echo "<br><br>".nl2br($tresc); // tutaj usunalem tez niepotrzebne dwa cudzyslowy
  9.  
  10. }
  11. echo '
  12. <form enctype="multipart/form-data" action="" method="POST">
  13. <input type="hidden" name="MAX_FILE_SIZE" value="30000" />
  14. Plik do wysłania: <input name="userfile" type="file" /><br>
  15. <input type="submit" value="Wyślij" name="send" />
  16. </form>
  17. ';
  18.  
  19.  
  20. ?>


Co do kodowania, to koduj plik UTF-8 bez BOM, zadeklaruj w przegladarce UTF-8 w sekcji DOCTYPE i zapoznaj się z funkcja iconv" title="Zobacz w manualu PHP" target="_manual i pochodnymi


--------------------
ET LINGUA EIUS LOQUETUR IUDICIUM
Go to the top of the page
+Quote Post
reyne
post
Post #5





Grupa: Zarejestrowani
Postów: 73
Pomógł: 1
Dołączył: 19.12.2007

Ostrzeżenie: (0%)
-----


próbowałem funkcji iconv ale niestety ucina ona tekst przy pierwszej polskiej literze (tekst jest pobierany tylko do tego momentu)

oto cały kod:

Kod
<?php

if(isset($_POST['send'])) {

$file = $_FILES['userfile']['tmp_name'];
$uchwyt = fopen($file, 'r');
$msg = fread($uchwyt, filesize($file));
$tresc = iconv('utf-8','iso-8859-2',$msg);

echo "<br><br>".nl2br($tresc);

}
echo '
<form enctype="multipart/form-data" action="" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="30000" />
Plik do wysłania: <input name="userfile" type="file" /><br>
<input type="submit" value="Wyślij" name="send" />
</form>
';


?>
Go to the top of the page
+Quote Post
pyro
post
Post #6





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

Ostrzeżenie: (0%)
-----


reyne, ale najlepiej zastosowac kodowanie UTF-8


--------------------
ET LINGUA EIUS LOQUETUR IUDICIUM
Go to the top of the page
+Quote Post
reyne
post
Post #7





Grupa: Zarejestrowani
Postów: 73
Pomógł: 1
Dołączył: 19.12.2007

Ostrzeżenie: (0%)
-----


rozwiązanie:

dodałem na początku pliku standard kodowania notatnika i śmiga
Kod
echo '
<meta http-equiv="content-type" content="text/html; charset=windows-1250" />';


dzięki za pomoc! czarodziej.gif

Ten post edytował reyne 8.08.2008, 22:03:37
Go to the top of the page
+Quote Post
pyro
post
Post #8





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

Ostrzeżenie: (0%)
-----


ale UTF-8 obsługuje polskie litery!


--------------------
ET LINGUA EIUS LOQUETUR IUDICIUM
Go to the top of the page
+Quote Post
reyne
post
Post #9





Grupa: Zarejestrowani
Postów: 73
Pomógł: 1
Dołączył: 19.12.2007

Ostrzeżenie: (0%)
-----


niestety mam jeszcze jeden mały problem, gdy zrobiłem uploadowanie kilku plików naraz w ten sposób:

Kod
<?php

echo '
<meta http-equiv="content-type" content="text/html; charset=windows-1250" />';

if(isset($_POST['send'])) {

$uchwyt = fopen($_FILES['userfile']['tmp_name'], 'r');
$uchwyt2 = fopen($_FILES['userfile2']['tmp_name'], 'r');
$uchwyt3 = fopen($_FILES['userfile3']['tmp_name'], 'r');
$uchwyt4 = fopen($_FILES['userfile4']['tmp_name'], 'r');
$uchwyt5 = fopen($_FILES['userfile5']['tmp_name'], 'r');
$uchwyt6 = fopen($_FILES['userfile6']['tmp_name'], 'r');
$uchwyt7 = fopen($_FILES['userfile7']['tmp_name'], 'r');
$uchwyt8 = fopen($_FILES['userfile8']['tmp_name'], 'r');
$uchwyt9 = fopen($_FILES['userfile9']['tmp_name'], 'r');
$msg .= fread($uchwyt, filesize($_FILES['userfile']['tmp_name']));
$msg .= fread($uchwyt2, filesize($_FILES['userfile2']['tmp_name']));
$msg .= fread($uchwyt3, filesize($_FILES['userfile3']['tmp_name']));
$msg .= fread($uchwyt4, filesize($_FILES['userfile4']['tmp_name']));
$msg .= fread($uchwyt5, filesize($_FILES['userfile5']['tmp_name']));
$msg .= fread($uchwyt6, filesize($_FILES['userfile6']['tmp_name']));
$msg .= fread($uchwyt7, filesize($_FILES['userfile7']['tmp_name']));
$msg .= fread($uchwyt8, filesize($_FILES['userfile8']['tmp_name']));
$msg .= fread($uchwyt9, filesize($_FILES['userfile9']['tmp_name']));


echo "<br><br>".nl2br($msg);


}else {
echo '
<form enctype="multipart/form-data" action="" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="30000" />
Pliki do wysłania: <br>
<input name="userfile" type="file" /><br>
<input name="userfile2" type="file" /><br>
<input name="userfile3" type="file" /><br>
<input name="userfile4" type="file" /><br>
<input name="userfile5" type="file" /><br>
<input name="userfile6" type="file" /><br>
<input name="userfile7" type="file" /><br>
<input name="userfile8" type="file" /><br>
<input name="userfile9" type="file" /><br>
<input type="submit" value="Wyślij" name="send" />
</form>
';
}
?>


pliki są wgrywane poprawnie jeden pod drugim, więc dlaczego na górze wyskakują mi błędy:

Kod
[b]Warning[/b]:  fread(): supplied argument is not a valid stream resource in [b]/srv/www/vhosts/localhost/httpdocs/file.php[/b] on line [b]19[/b]

[b]Warning[/b]:  fread(): supplied argument is not a valid stream resource in [b]/srv/www/vhosts/[/b][b]localhost[/b][b]/httpdocs/file.php[/b] on line [b]20[/b]

[b]Warning[/b]:  fread(): supplied argument is not a valid stream resource in [b]/srv/www/vhosts/[/b][b]localhost[/b][b]/httpdocs/file.php[/b] on line [b]21[/b]

[b]Warning[/b]:  fread(): supplied argument is not a valid stream resource in [b]/srv/www/vhosts/[/b][b]localhost[/b][b]/httpdocs/file.php[/b] on line [b]22[/b]

[b]Warning[/b]:  fread(): supplied argument is not a valid stream resource in [b]/srv/www/vhosts/[/b][b]localhost[/b][b]/httpdocs/file.php[/b] on line [b]23[/b]

[b]Warning[/b]:  fread(): supplied argument is not a valid stream resource in [b]/srv/www/vhosts/[/b][b]localhost[/b][b]/httpdocs/file.php[/b] on line [b]24[/b]

[b]Warning[/b]:  fread(): supplied argument is not a valid stream resource in [b]/srv/www/vhosts/[/b][b]localhost[/b][b]/httpdocs/file.php[/b] on line [b]25[/b]


skrypt działa ale te błędy.. wstydnis.gif
Go to the top of the page
+Quote Post
pyro
post
Post #10





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

Ostrzeżenie: (0%)
-----


sprobuj zamiast:

  1. <?php
  2. $uchwyt = fopen($_FILES['userfile']['tmp_name'], 'r');
  3. $uchwyt2 = fopen($_FILES['userfile2']['tmp_name'], 'r');
  4. $uchwyt3 = fopen($_FILES['userfile3']['tmp_name'], 'r');
  5. $uchwyt4 = fopen($_FILES['userfile4']['tmp_name'], 'r');
  6. $uchwyt5 = fopen($_FILES['userfile5']['tmp_name'], 'r');
  7. $uchwyt6 = fopen($_FILES['userfile6']['tmp_name'], 'r');
  8. $uchwyt7 = fopen($_FILES['userfile7']['tmp_name'], 'r');
  9. $uchwyt8 = fopen($_FILES['userfile8']['tmp_name'], 'r');
  10. $uchwyt9 = fopen($_FILES['userfile9']['tmp_name'], 'r');
  11. $msg .= fread($uchwyt, filesize($_FILES['userfile']['tmp_name']));
  12. $msg .= fread($uchwyt2, filesize($_FILES['userfile2']['tmp_name']));
  13. $msg .= fread($uchwyt3, filesize($_FILES['userfile3']['tmp_name']));
  14. $msg .= fread($uchwyt4, filesize($_FILES['userfile4']['tmp_name']));
  15. $msg .= fread($uchwyt5, filesize($_FILES['userfile5']['tmp_name']));
  16. $msg .= fread($uchwyt6, filesize($_FILES['userfile6']['tmp_name']));
  17. $msg .= fread($uchwyt7, filesize($_FILES['userfile7']['tmp_name']));
  18. $msg .= fread($uchwyt8, filesize($_FILES['userfile8']['tmp_name']));
  19. $msg .= fread($uchwyt9, filesize($_FILES['userfile9']['tmp_name']));
  20. ?>


czegos takiego:

  1. <?php
  2. // w formularzu zamien "userfile" na "userfile1"
  3. for($i = 1; $i < 10; $i++)
  4. {
  5. $a = file_get_contents($_FILES['userfile'.$i]['tmp_name']);
  6. $msg .= $a;
  7. }
  8. ?>


Znacznie skraca kod i może będzie bez bledow smile.gif


--------------------
ET LINGUA EIUS LOQUETUR IUDICIUM
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 06:30