Filemtime给出错误的输出

时间:2017-08-04 16:14:59

标签: php file-upload filemtime

我不知道为什么filetime给了我错误的日期。有人有什么建议吗?

for($i=0;$i<$image_count;$i++){                         //Setup file names and file types
    $temp_name = $target_dir . basename($_FILES["fileToUpload"]["name"][$i]);
    $temp_thumb_name = $thumb_target_dir . basename($_FILES["fileToUpload"]["name"][$i]);
    $temp_type = pathinfo($temp_name,PATHINFO_EXTENSION);
    array_push($target_file, $temp_name);               // Create array of file names
    array_push($target_file_thumb, $temp_thumb_name);   //Create array of thumb path names
    array_push($imageFileType, $temp_type);             //Create array of fileextensions
    echo "<BR>was last modified: " . date ("F d Y H:i:s.", filemtime(basename($_FILES["fileToUpload"]["name"][$i])));
    array_push($file_creation, date ("F d Y H:i:s.", filemtime(basename($_FILES["fileToUpload"]["name"][$i]))));
}

输出

was last modified: January 01 1970 01:00:00.

错误日志

PHP Warning:  filemtime(): stat failed for DSC07292.jpg

3 个答案:

答案 0 :(得分:0)

我认为问题出在路径上试试这个:

array_push($file_creation, date ("F d Y H:i:s.", filemtime($temp_name)));

答案 1 :(得分:0)

你在一点钟获得输出1970的原因是因为你所处的时区(现在)是1小时+与GMT相比。
会发生什么是filemtime找不到文件或其他错误,但很可能是路径错误 Filemtime返回false。

Date将false读为0。 日期查看UNIX时间0中的日期,即1970年午夜。

您的时区增加1小时。

输出是午夜过后1小时。

我可以打赌我的左臂是路径错误,或者你尝试使用filemtime时文件不存在。

确保您的数组正确,并且该文件确实存储在basename()或webroot中。 (对此非常怀疑) 如果它不在webroot中,则需要在filemtime()中添加路径,如:

date ("F d Y H:i:s.", filemtime("THE PATH" . basename ($_FILES["fileToUpload"]["name"][$i])));

路径也可能需要/。

编辑:
我现在看到你在评论中给出了另一个答案的路径。

试试这个:

date ("F d Y H:i:s.", filemtime($_SERVER["DOCUMENT_ROOT"]  . "/uploads/1/" . basename ($_FILES["fileToUpload"]["name"][$i])));

答案 2 :(得分:0)

阅读文件上传文档:how to handle file uploads

  1. 上传的文件位于$_FILES["fileToUpload"]["tmp_name"][$i](仔细阅读, tmp _ 名称)
  2. $_FILES["fileToUpload"]["name"][$i]中文件的名称不包含任何路径。没用来为它命名。
  3. 您需要使用函数move_uploaded_file
  4. 将上传的文件移动到所需的位置

    一旦你修复了路径问题,我打赌你会失望的:文件创建日期是文件的元数据,它由文件系统管理(如果它想要的话)并且因此不在文件。

    在文件上传期间不会传输此信息。除非您的文件中可能存在元信息(如图像中的exif),否则无法获取原始文件的创建日期。顺便说一下,你想要创建日期但是使用了一个名为fileMtime的函数,'M'代表修改时间......

    其余的Andreas向你解释为什么日期是1970年,因为filemtime没有找到一个文件来统计

    // __DIR__ is directory of this php file, set accordingly
    $target_dir = __DIR__ . '/';
    $thumb_target_dir = __DIR__ . '/';
    
    $image_count = count($_FILES["fileToUpload"]["name"]);
    for ($i = 0; $i < $image_count; $i++) {
        //Setup file names and file types
    
        // Create the path to the location where we want to store the file
        $temp_name = $target_dir . $_FILES["fileToUpload"]["name"][$i];  
    
        // We need to move the temp file to the location we want :
        move_uploaded_file($_FILES["fileToUpload"]["tmp_name"][$i], $temp_name);
    
        $temp_thumb_name = $thumb_target_dir . $_FILES["fileToUpload"]["name"][$i];
        $temp_type = pathinfo($temp_name, PATHINFO_EXTENSION);
        array_push($target_file, $temp_name);               // Create array of file names
        array_push($target_file_thumb, $temp_thumb_name);   //Create array of thumb path names
        array_push($imageFileType, $temp_type);             //Create array of fileextensions
    
        // Get the file modif time, but only of the local file.
        $fmtime = filemtime($temp_name);
        echo "<BR>was last modified: " . date("F d Y H:i:s.", $fmtime);
        array_push($file_creation, date("F d Y H:i:s.", $fmtime));
    }