Warning: filesize(): stat failed for img.jpg

后端 未结 3 932
星月不相逢
星月不相逢 2021-01-12 13:39

I am trying to get the file size of an image and I keep getting Warning: filesize(): stat failed for img.jpg

This is what I did:

         


        
相关标签:
3条回答
  • 2021-01-12 14:18

    $_FILES['profile']['name'] has just name of the file.. you need to access

    $_FILES['profile']['tmp_name'] 
    

    will give you the temporary path of the file on your system. Here is http://php.net/manual/en/reserved.variables.files.php

    also you can access size of file with

    $_FILE['profile']['size']
    
    0 讨论(0)
  • 2021-01-12 14:19
    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";
    

    Would result in:

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

    This means that your variable

    $_FILES['profile']['name'];
    

    is NOT pointing to a valid file location on the SERVER and is instead one among:

    1. The file path on the client PC (not on the server) and in that case for sure you have not access to it directly
    2. Something that is not a string
    3. BUT it is not null (otherwise you simple would have returned null (see first example)

    Please next time post valid PHP code.

    Luca

    UPDATE

    As Marc B suggested you have to use $_FILES['profile']['tmp_name'];

    0 讨论(0)
  • 2021-01-12 14:32

    ['name'] in the $_FILES array is the name of the file on the CLIENT machine. It is information only, and has absolutely no relevance to what's actually stored on your server. You need to look at ['tmp_name'], which is where PHP has stored the file temporarily on the server, after the upload completed:

    $path = $_FILES['profile']['tmp_name'];
                              ^^^^^^^^^^^^
    
    0 讨论(0)
提交回复
热议问题