Filemtime дает неправильный вывод

Я понятия не имею, почему файловое время дает мне неправильную дату. У кого-нибудь есть предложения?

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

0

Решение

Прочитайте документы для загрузки файла: как обрабатывать загрузки файлов

  1. Загруженный файл находится по адресу $_FILES["fileToUpload"]["tmp_name"][$i] (Прочитайте внимательно, это tmp_название)
  2. Имя файла в $_FILES["fileToUpload"]["name"][$i] не содержит пути Бесполезно называть это.
  3. Вам нужно переместить загруженный файл в нужное место с помощью функции move_uploaded_file

Как только вы исправите проблему с путями, держу пари, вы будете разочарованы: дата создания файла — это метаданные файла, она управляется файловой системой (если она этого хочет) и, следовательно, не находится внутри файла.

Эта часть информации не передается во время загрузки файла. Если у вас нет файлов, в которых может содержаться метаинформация (например, exif в изображениях), невозможно получить дату создания оригинальных файлов. Кстати, вы хотите дату создания, но используете функцию с именем fileMtime, буква M обозначает время модификации …

В остальном Андреас объяснил вам, почему дата 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));
}
0

Другие решения

Я думаю, что проблема в пути, попробуйте это:

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

Причина, по которой вы получаете выход 1970 в час, заключается в том, что вы находитесь в часовом поясе (сейчас), который на 1 час больше по сравнению с GMT.
Что происходит, так это то, что filemtime не находит файл или что-то еще не так, но, скорее всего, ошибка пути.
Filemtime возвращает 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])));
0
По вопросам рекламы [email protected]