wake-up-neo.com

Warnung: Dateigröße (): stat fehlgeschlagen für img.jpg

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! 

5
yuval

['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'];
                          ^^^^^^^^^^^^
6
Marc B

$_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']
3
geekman
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:

  1. Der Dateipfad auf dem Client-PC (nicht auf dem Server) und in diesem Fall haben Sie sicher keinen direkten Zugriff darauf
  2. Etwas, das keine Schnur ist
  3. ABER es ist nicht null (sonst hätten Sie einfach 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.

1
Luca Abbati