Ich versuche, die Dateigröße eines Bildes zu ermitteln, und ich bekomme ständig Warning: filesize(): stat failed for img.jpg
Das habe ich gemacht:
$path = $_FILES['profile']['name'];
$path = iconv('UTF-8', 'ISO-8859-1',$path);
if (!in_array(pathinfo($path,PATHINFO_EXTENSION),$allowed)) {
return "file";
} elseif (filesize($path)>(1024*600))
Ich bin in der Lage, die Dateierweiterung zu erhalten, aber die filesize()
scheint einfach nicht zu funktionieren. Ich habe etwas gelesen und fand this , aber das Problem wurde dadurch nicht gelöst. Jede Hilfe wird sehr geschätzt!
['name']
im $ _FILES-Array ist der Name der Datei auf der CLIENT-Maschine. Es handelt sich lediglich um Informationen und hat keinerlei Relevanz für das, was tatsächlich auf Ihrem Server gespeichert ist. Sie müssen sich ['tmp_name']
anschauen, wo PHP die Datei nach Abschluss des Uploads temporär auf dem Server gespeichert hat:
$path = $_FILES['profile']['tmp_name'];
^^^^^^^^^^^^
$_FILES['profile']['name']
hat nur den Namen der Datei .. Sie müssen zugreifen
$_FILES['profile']['tmp_name']
gibt den temporären Pfad der Datei auf Ihrem System an. Hier ist http://php.net/manual/en/reserved.variables.files.php
außerdem können Sie mit auf die Dateigröße zugreifen
$_FILE['profile']['size']
echo "---- NULL ---------------\n";
$path = null;
echo "File size is: " . filesize($path) . "\n";
echo "---- FILE EXISTS --------\n";
$path = '/home/luca/Scrivania/file_that_exists.jpg';
echo "File size is: " . filesize($path) . "\n";
echo "---- FILE NOT EXISTS ----\n";
$path = 'file/does/not/exists.jpg';
echo "File size is: " . filesize($path) . "\n";
Würde ergeben:
---- NULL ---------------
File size is:
---- FILE EXISTS --------
File size is: 78953
---- FILE NOT EXISTS ----
Warning: filesize(): stat failed for file/does/not/exists.jpg in /home/luca/Scrivania/test.php on line 13
Call Stack:
0.0001 642120 1. {main}() /home/luca/Scrivania/test.php:0
0.0002 642448 2. filesize() /home/luca/Scrivania/test.php:13
Dies bedeutet, dass Ihre Variable
$_FILES['profile']['name'];
zeigt NICHT auf einen gültigen Dateispeicherort auf dem SERVER und ist stattdessen einer der folgenden:
null
zurückgegeben (siehe erstes Beispiel))Bitte schreiben Sie beim nächsten Mal gültigen PHP Code.
Luca
UPDATE
Wie von Marc B vorgeschlagen, müssen Sie $_FILES['profile']['tmp_name'];
verwenden.