Portál AbcLinuxu, 14. května 2025 01:30
Dobry den,
narazil jsem na problem (s trivialnim) uploadem souboru pomoci http.
Vse probehne hladce, nikde zadne chyby , php vrati $_FILES[userfile][error] = 0 takze upload succes. Ale na filesystemu se zadny soubor nevytvori. Uz jsem ponekud zoufaly a nevim kam sahnout. v http.conf jsem nic nenasel, to same v php.ini a kamos Google take mlci.
muj kod:
<html> <body> <?php echo "<pre>"; print_r($_FILES); echo "</pre>"; ?> <form enctype="multipart/form-data" method="POST"> <input type="hidden" name="MAX_FILE_SIZE" value="300000000" /> Send this file: <input name="userfile" type="file" /> <input type="submit" value="Send File" /> </form> </body> </html>
vystupem je succes hlaska ale soubor nikde nelezi :(((((:
Array ( [userfile] => Array ( [name] => P1010963.JPG [type] => image/jpeg [tmp_name] => /tmp/phpNA7smX [error] => 0 [size] => 4400281 ) )
Problem se tyka jak malych tak i velkych souboru.
nastaveni php.ini je: file_uploads = On upload_tmp_dir = "/tmp" upload_max_filesize = 100M apahe a php je default ze OpenSuse 11.0 apache2-2.2.8-28.4 apache2-mod_php5-5.2.9-0.1
Pokud tusite kde je zakopany pes, budu velmi rad za nakopnuti!
S pozdravem
Dworkin
/tmp/phpNA7smX
?
Rad se pripojim do teto "plodne" diskuse . 300000000 je 286,10MB
.
300 000 000 B, pricemz znamy prevod je 1024 B => kB, 1024 kB => MB (info pro ctere, kteri by se nechytaly na prvni pohled ).
Tento kus kodu jsem uvadel jako priklad z testovaciho prostredi, s realnym zivotem nema vubec co delat. Pro to takove mezni hodnoty, o kterych se jiste da vesti dlouha diskuze. Ostatne tak jako nize pri zkopirovani souboru je potreba validace zaslanych dat ap. Zde mi slo primarne o duvod proc neni videt zaslany soubor ve sve [temp] a vysledek je ten ze neum cist manualy.
Dworkin
ehh mate pravdu jsem debil...a to jsem ten navod cetl nekolikrat :(
http://us3.php.net/manual/en/features.file-upload.post-method.php
The file will be deleted from the temporary directory at the end of the request if it has not been moved away or renamed.
Vyreseno pridanim tohoto kodu na zacatek scriptu, ktery zkopiruje soubor z /tmp do rootu kde je koren stranek.
if (is_uploaded_file($_FILES['userfile']['tmp_name'])) { move_uploaded_file( $_FILES['userfile']['tmp_name'] , "image.jpg" ); }
Nicmene, da se nejak uploadovat sobor jen pomoci http bez php?
S pozdravem
Dworkin
Nicmene, da se nejak uploadovat sobor jen pomoci http bez php?Vždyť vám prohlížeč ten soubor posílá právě přes HTTP. HTTP server pak musí vědět, co s tím souborem dělat, a to ve vašem případě dělá pomocí PHP. Když si naprogramuji svůj webserver nebo si spustím aplikační webserver mého oblíbeného webového frameworku, může upload umět a přitom v něm žádné PHP být nemusí. Pod Apachem to jdei pomocí jiných programovacích prostředí (jazyků, chcete-li), než PHP. Apache, který nejspíš používáte, neumí sám od sebe upload souboru ošetřit (pokud se nejedná o DAV nebo o nějaký obskurní modul do Apache), a ani to od něj nikdo nečeká.
Nicmene, da se nejak uploadovat sobor jen pomoci http bez php?
HTTP definuje i PUT (a dalsi, tedy nejen GET a POST). Problemem muze byt, co se stane na strane serveru (jak s tim nalozi). Je velky problem pouzit PHP (k tomu je spousta dostupne dokumentace, vcetne prikladu) ? Osobne bych to videl jako nejjednodussi variantu (co se nastaveni nejakeho opravneni/restrikce tyce), pokud nekdo zacina.
Nejake info (cast 9.6) k PUT jako takovemu (zdroj: W3C).
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.