我正在开发一个下载ePub文件的PHP应用程序 . 作为代码的一部分,我添加了一个唯一的标识符,可用于跟踪数据库中的原始下载信息以打击盗版 .
我正在使用PHP ZipArchive函数向文件添加存档注释,但是如果存在注释,Adobe Digital版本似乎无法打开ePub文件 . 当评论被删除时,它打开正常,所以我只是想看看是否有其他人之前有这个问题,如果有办法添加评论到ePub文件,这将允许Adobe Digital Editions打开它 . 以下是我正在使用的代码:
public function secureEpub($file, $download_id, $filepath){
//GENERATE RANDOM FILE NAME
$newFile = uniqid().".epub";
//COPY EPUB AND WORK FROM THAT VERSION
copy($file, $filepath.$newFile);
//TREAT EPUB FILE AS ORDINARY ZIP ARCHIVE
//OPEN AND EXTRACT EPUB
$zip = new ZipArchive;
$res = $zip->open($filepath.$newFile);
if($res === TRUE){
//ZIP ARCHIVE HAS OPENED SUCCESSFULLY - SET ARCHIVE COMMENT TO DOWNLOAD ID
$zip->setArchiveComment($download_id);
$zip->close();
} else {
error_log('Unable to open ePub (' . $filepath.$newFile . ') as Directory');
return false;
exit;
}
//ONCE CHANGE HAS BEEN MADE CLOSE THE ARCHIVE AND RETURN TEMP FILE
return $filepath.$newFile;
}
如您所见,它会复制原始文件,创建一个存档注释,然后返回该文件(稍后会删除) . 有没有办法在不破坏ePub(ADE)的情况下实现这一目标?
如果我没有任何意义,请告诉我:D
P.S:只是为了澄清,下载工作正常,评论正确应用 . 只是ADE无法打开它,而其他ePub阅读器管理得很好 . 我是以错误的方式去做的吗?
1 回答
好吧,我找不到解决方法,所以我想出了一个解决方案 . 您可以在ZIP文件中添加包含详细信息的新文件或目录 .
所以,你可以使用类似的东西:
或者创建一个以下载后命名的目录:
如果你像我一样卡住,可能会建议用命名更加模糊一些:)
谢谢