2011-06-13 32 views
0

我們,我正在寫代碼上傳文件,壓縮他們,並刪除tmp文件。 但是,當我使用取消鏈接函數,它不會刪除所有文件,有人可以向我解釋爲什麼?代碼壓縮上傳的文件無法刪除臨時文件

關注PHP代碼:

$zip = new ZipArchive(); 
$target_path = 'img/products/'; 
$zip->open($target_path.$id_insert.'.zip', ZIPARCHIVE::CREATE); 
$img_count = $_POST['count_file']; 
for ($i = 1; $i <= $img_count; $i++){ 
    $temp = 'img'.$i; 
    $file = $i.'-'.$id_insert.'-'.$_FILES[$temp]['name']; 
    $path = $target_path.basename($file); 
    if(move_uploaded_file($_FILES[$temp]['tmp_name'], $path)) { 
     $zip->addFile($path, basename($file)); 
     $files_to_delete[] = $path; 
    } 
} 
$zip->close(); 
foreach($files_to_delete AS $file){ 
    //unlink(dirname(__FILE__).'/'.$path); 
} 
+0

如果它不起作用,你應該得到'E_WARNING',你能把它張貼在這裏嗎?我猜測有一些特權問題。 – 2011-06-13 14:56:25

+0

我得到一個「沒有這樣的文件或目錄」,但路徑是正確的,併爲另一個上傳的文件工作哦:) – Awea 2011-06-13 14:59:11

+0

他們是另一種方法來添加文件到一個zip存檔沒有創建文件? ^^ – Awea 2011-06-13 15:01:58

回答

3
foreach($files_to_delete AS $file){ 
    //unlink(dirname(__FILE__).'/'.$path); 
} 

在該塊應該替換$ $文件路徑,因爲這是你foreaching他們作爲什麼。你會得到這個錯誤,因爲在你第一次解除$ path的鏈接後,$ path的文件是未鏈接的,但是它的每一次迭代都試圖刪除同一個文件(這是最後一個分配給$ path變量的文件)。