2013-03-18 63 views
0

我有一個圖像文件列表。我需要以zip格式存檔這些文件,並使存檔文件可下載。我已經看到ArchiverZip類別在system moduleDrupal 7中定義。但我無法創建一個zip文件。我如何在Drupal 7?有沒有hooks或定製modules這個?這個你能幫我嗎。從選定文件列表創建一個zip文件,並使壓縮文件在Drupal 7中可下載

修訂

以下是代碼:

$zip = new ArchiverZip('archive.zip'); 
foreach($_POST['img'] as $fid): 
    $query = db_select('file_managed', 'fn') 
      ->condition('fid', $fid) 
      ->fields('fn', array('filename')); 
    $result = $query->execute(); 

    foreach($result as $row) { 
     if(file_exists('sites/default/files/'.$row->filename)){ 
      var_dump($zip->add($base_path.'sites/default/files/'.$row->filename)); 
     } 
    } 
endforeach; 

,這反映了以下錯誤

異常:無法在ArchiverZip打開archive.zip - > __結構()( basepath \ modules \ system \ system.archiver.inc)的第91行。 請幫我這個。 。

+0

這個問題似乎是一個[Drupal的這麼提問]重複(http://drupal.stackexchange.com/questions/65866/create-a-zip-file - 從-A-列表中選擇 - 文件 - 和化妝的,拉鍊,文件downloa) – 2014-06-15 16:59:41

回答

0

那麼我錯過了在創建ArchiverZip類之前創建了archive.zip文件,因此以前存檔操作失敗。 。現在,該代碼就會像下面:

$filename = 'archive.zip'; 
fopen($filename, 'w'); 
$zip = new ArchiverZip($filename); 
foreach($_POST['img'] as $fid): 
    $query = db_select('file_managed', 'fn') 
      ->condition('fid', $fid) 
      ->fields('fn', array('filename')); 
    $result = $query->execute(); 

    foreach($result as $row) { 
     if(file_exists('sites/default/files/'.$row->filename)){ 
      $zip->add($base_path.'sites/default/files/'.$row->filename); 
     } 
    } 
endforeach; 
相關問題