Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Przeslanie i polaczenie plikow tekstowych z dysku
Forum PHP.pl > Forum > Przedszkole
reyne
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
sticker
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
reyne
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.
pyro
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
reyne
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>
';


?>
pyro
reyne, ale najlepiej zastosowac kodowanie UTF-8
reyne
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
pyro
ale UTF-8 obsługuje polskie litery!
reyne
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
pyro
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
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.