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!!!