3 回答
TA贡献1803条经验 获得超3个赞
ZipArchive 不支持此功能。
我建议您使用简单的包装器来处理 zips - ZipStream-PHP
您的基本用例如下所示:
$resultArchive = fopen($pathZip, 'w');
$options = new ZipStream\Option\Archive();
$options->setSendHttpHeaders(false);
$options->setOutputStream($resultArchive);
$zip = new ZipStream\ZipStream('example.zip', $options);
foreach($fileList as $fileName => $fileContents)
{
$fileOptions = new ZipStream\Option\File();
$fileOptions->setTime(new \DateTime()); // set your custom date, by default is NOW
$zip->addFile($fileName, $fileContents, $fileOptions);
}
$zip->finish();
fclose($resultArchive);
TA贡献1872条经验 获得超3个赞
将文件日期存储在 zip 中将始终使用文件系统日期,因为添加文件时没有更改文件日期的功能,您可以在添加文件之前touch()文件。
时区设置仅用于显示时间,设置时区不影响时间戳。
$date1 = new DateTime('now', new DateTimeZone("UTC"));
$date2 = new DateTime('now', new DateTimeZone('Europe/Rome'));
echo $date1->getTimestamp() . PHP_EOL;
echo $date2->getTimestamp() . PHP_EOL;
结果:
1569568587
1569568587
您可以获取时区的偏移量并更改时间。
$offset = $date2->getOffset();
$newTime = $date2->getTimestamp() + $offset;
$res = touch($fileName, $newTime);
TA贡献1790条经验 获得超9个赞
文件上传时间与服务器时间有关。所以,你可以做一个技巧来做到这一点。例如,在 db 上存储文件上传时间 (upload_time, upload_my_time)
- 3 回答
- 0 关注
- 165 浏览
添加回答
举报