2014-02-06 63 views
0

我正在研究下載ePub文件的PHP應用程序。作爲代碼的一部分,我添加了一個唯一標識符,可用於跟蹤數據庫中的原始下載信息以打擊盜版行爲。保存檔案評論至ePub文件

我正在使用PHP ZipArchive函數向該文件添加歸檔註釋,但似乎Adobe Digital Edition無法在存在評論時打開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:只是爲了澄清,下載正常工作和註釋正確應用。只是當其他ePub讀者管理良好時,ADE無法打開它。我是否以錯誤的方式處理它?

+0

epub DRM是否受到保護?如果是,評論可能會混淆DRM系統依賴的一些校驗和,從而使布丁不在epub文件中。 – Boldewyn

+0

Hi @Boldewyn,沒有ePub不受DRM保護 – JackWillDavis

回答

0

好的,我無法找到解決方法,所以我提出了一個解決方案。您可以在包含詳細信息的ZIP文件中添加新文件或目錄。

所以,你可以使用類似:

$zip->addFromString('test.txt', $download_id); 

或創建一個下載類似命名的目錄:

$zip->addEmptyDir($download_id); 

可能會建議是多一點混淆命名但如果你像我一樣卡住:)

謝謝