Filemtime 给出错误的输出
Filemtime giving the wrong output
我不知道为什么文件时间给我错误的日期。有人有什么建议吗?
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
我认为问题出在路径上试试这个:
array_push($file_creation, date ("F d Y H:i:s.", filemtime($temp_name)));
您在一点钟获得输出 1970 的原因是因为您所在的时区(现在)比 GMT 多 1 小时。
发生的情况是 filemtime 找不到该文件或其他错误,但很可能是路径错误。
文件时间 returns 错误。
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])));
阅读文件上传文档:how to handle file uploads
- 上传的文件位于
$_FILES["fileToUpload"]["tmp_name"][$i]
(仔细阅读,是tmp_name)
$_FILES["fileToUpload"]["name"][$i]
中的文件名不包含任何路径。基本命名没用。
- 您需要使用
move_uploaded_file
功能将上传的文件移动到您想要的位置
一旦你解决了路径问题,我敢打赌你会失望的:文件创建日期是文件的元数据,它由文件系统管理(如果需要的话),因此不是在文件中。
这条信息在文件上传过程中没有传输。除非您的文件中可能包含元信息(如图像中的 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));
}
我不知道为什么文件时间给我错误的日期。有人有什么建议吗?
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
我认为问题出在路径上试试这个:
array_push($file_creation, date ("F d Y H:i:s.", filemtime($temp_name)));
您在一点钟获得输出 1970 的原因是因为您所在的时区(现在)比 GMT 多 1 小时。
发生的情况是 filemtime 找不到该文件或其他错误,但很可能是路径错误。
文件时间 returns 错误。
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])));
阅读文件上传文档:how to handle file uploads
- 上传的文件位于
$_FILES["fileToUpload"]["tmp_name"][$i]
(仔细阅读,是tmp_name) $_FILES["fileToUpload"]["name"][$i]
中的文件名不包含任何路径。基本命名没用。- 您需要使用
move_uploaded_file
功能将上传的文件移动到您想要的位置
一旦你解决了路径问题,我敢打赌你会失望的:文件创建日期是文件的元数据,它由文件系统管理(如果需要的话),因此不是在文件中。
这条信息在文件上传过程中没有传输。除非您的文件中可能包含元信息(如图像中的 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));
}