2012-02-27 24 views
0

我使用這個功能來上傳文件到硬盤:文件'C: xampp tmp php3226.tmp'無法重命名。它在zend中已經存在錯誤,如何?

$talentFolderPath = 'C:/xampp/htdocs/project/'; 

public function uploadToDisk($talentFolderPath, $filename) 
{ 

    $adapter = new Zend_File_Transfer_Adapter_Http(); 
    $adapter->setDestination($talentFolderPath); 
    $adapter->addFilter('Rename',array('target' => $talentFolderPath."/".$filename)); 
    if ($adapter->receive()) { 
     $message = "success"; 
    } else { 
     $message = "fail"; 
    } 

    return $message; 
} 

,我得到這個消息:

消息:文件 'C:\ XAMPP \ tmp目錄\ php3226.tmp' 不能被重新命名。它已經存在。

任何想法是怎麼回事?

謝謝。

回答

8

Rename過濾器默認情況下不覆蓋目標文件,如果它已經存在似乎是你正在經歷的。

這個片段是出於Zend/Filter/File/Rename.php

if (file_exists($file['target'])) { 
     require_once 'Zend/Filter/Exception.php'; 
     throw new Zend_Filter_Exception(sprintf("File '%s' could not be renamed. It already exists.", $value)); 
    } 

要解決這個問題,你必須通過overwrite選項是這樣的:

$adapter->addFilter('Rename', array(
    'target' => $talentFolderPath . DIRECTORY_SEPARATOR . $filename, 
    'overwrite' => true 
)); 

詳情請參閱Zend_Filter_File_Rename

+0

感謝對這個問題感興趣,我失去了希望:),'覆蓋'工作。酷 – Patrioticcow 2012-02-28 18:51:00

+2

不客氣。該錯誤是有點誤導,因爲它說臨時文件的名稱,然後「它已經存在」。說,「重命名目標已經存在」或「目標文件已經存在」會更清晰。 – drew010 2012-02-28 18:53:27

+0

感謝Dude :) ...它幫助我 – chhameed 2013-03-06 07:15:03

相關問題