PDA

View Full Version : [PHP] Upload file: problema!


Gregor
01-12-2008, 11:53
Salve,
sto cercando di sistemare lo script per fare un upload di file sul server (da me gestito).
Tutto bene ma c'è un piccolo problema: se uploado un file di size più grande del consentito (upload_max_filesize = 2Mb) è come se non passassi alcun file, quindi tutte le variabili $_FILES["fileToUpload"]["name"]
$_FILES["fileToUpload"]["type"]
$_FILES["fileToUpload"]["size"]
sono vuote, quindi non posso fare il controllo sulla dimensione del file che sto tentando di uploadare :confused:
Come mai?
Indipendentemente da cosa passo, le variabili di cui sopra non dovrebbero comunque darmi dei valori?
Tnx!

(Anche $_FILES["fileToUpload"]["error"] è vuota!!!)

RISOLTO!

Gregor
01-12-2008, 12:13
Adesso mi sono accordo che il problema si presenta con file più grandi di 1 Mb. Sotto il Mb nessun problema :confused: :muro:
Sto facendo vari tentativi...

Gregor
01-12-2008, 17:00
La cosa si fa sempre più strana...
Premesso che ho settato 2Mb sia upload_max_filesize che post_max_size, così ho tolto il controllo (sulla dimensione max del file) nel form.
Mi aspetto che se provo a fare un upload > 2Mb, mediante lo script intercetto il size e posso comunicare che le dimensioni del file sono troppo grosse!
Mi sono accorto che provando a fare un upload di un file con size > 2Mb tutte le altre variabili del form che passo tramite $_POST sono vuote!!!! :confused: :confused: :confused:
Così tutti i miei controlli vanno a farsi benedire!!!

error_reporting(2047) mi dà:


Notice: Undefined index: fileToUpload in "path...php" on line 10

ben 5 volte! :confused: :confused: :confused:

Perchè mi svuota le variabili $_POST?!?!?!?

Gregor
02-12-2008, 08:36
Ho capito il problema ma non so risolverlo!
Ho creato un form partendo da zero. Semplice semplice:

-upload file
-campo testo
-checkbox
-select

Passo i dati tramite POST.

Le variabili campo testo, checkbox e select passano perfettamente se non allego alcun file o se ne allego uno con size < 1Mb (che è il limite che ho impostato nel php.ini).

Ma se allego un file con size > 1Mb ecco che nessuna variabile passa tramite post! E per ognuna ottengo:

Undefined index: xxx in "path...php"

Qualcuno sa come mai questo problema si presenta (è al quanto inspiegabile) e sa come risolvere?

Tnx!

ianaz
02-12-2008, 09:09
Postaci il codice delle pagine :)

Gregor
02-12-2008, 10:17
Postaci il codice delle pagine :)

1.htm
<html>
<head>
<title>PHP File Upload Example</title>
</head>
<body>
<form enctype="multipart/form-data" method="post" action="2.php">
<p>
<input type="file" name="fileToUpload" />
<br />
</p>
<p>
<textarea name="testo"></textarea>
</p>
<p>&nbsp;</p>
<p>
<input type="checkbox" name="check" value="checkbox">
</p>
<p>
<select name="numeri">
<option>1</option>
<option>2</option>
<option>3</option>
</select>
</p>
<p>
<input name="submit" type="submit" value="Upload File" />
</p>
</form>
</body>
</html>

2.php
<?php
error_reporting(2047);
echo "<table border=\"1\">";
echo "<tr><td>Client Filename: </td>
<td>" . $_FILES["fileToUpload"]["name"] . "</td></tr>";
echo "<tr><td>File Type: </td>
<td>" . $_FILES["fileToUpload"]["type"] . "</td></tr>";
echo "<tr><td>File Size: </td>
<td>" . ($_FILES["fileToUpload"]["size"] / 1024) . " Kb</td></tr>";
echo "<tr><td>Name of Temporary File: </td>
<td>" . $_FILES["fileToUpload"]["tmp_name"] . "</td></tr>";
echo "<tr><td>Errore: </td>
<td>" . $_FILES["fileToUpload"]["error"] . "</td></tr>";
echo "</table>";

print("Testo: ".$_POST['testo']."<br><br>");
print("Check: ".$_POST['check']."<br><br>");
print("Numeri: ".$_POST['numeri']."<br><br>");
?>

ianaz
02-12-2008, 10:46
A me pare funzionare pure con un file da 15 MB


Client Filename: zattixweb.zip
File Type: application/zip
File Size: 15514.1074219 Kb
Name of Temporary File: c:/wamp/tmp\php32C8.tmp
Errore: 0
Testo: dfgdgf

Check: checkbox

Numeri: 3



Probabilmente é un parametro nel file ini ma non saprei dirti quale...:doh:

Gregor
02-12-2008, 12:56
A me pare funzionare pure con un file da 15 MB

Probabilmente é un parametro nel file ini ma non saprei dirti quale...:doh:

Bella questa :confused: :mbe:
Tu che valori hai impostato per post_max_size e upload_max_filesize?
Sai se ci sono altri parametri che possono influire? :(

ianaz
02-12-2008, 13:02
post_max_size = 16M
upload_max_filesize = 20M


:)
se non erro quei parametri devono essere piu alti di quello che vuoi uppare. Ricordo che tempo fa l'avevo a 8MB e a uppare immagini da 2MB mi dava errore. L'ho aumentato a 16 e andava :D
Non so, é da un po' che non faccio più PHP, ti conviene aspettare consigli dai master.

Gregor
02-12-2008, 14:01
post_max_size = 16M
upload_max_filesize = 20M


Com questi parametri il problema è sparito :) :D :sofico:

Tnx!!!

Hardware Upgrade Forum Database Error
Database Error Database error
The Hardware Upgrade Forum database has encountered a problem.

Please try the following:
  • Load the page again by clicking the Refresh button in your web browser.
  • Open the www.hwupgrade.it home page, then try to open another page.
  • Click the Back button to try another link.
The www.hwupgrade.it forum technical staff have been notified of the error, though you may contact them if the problem persists.
 
We apologise for any inconvenience.