0

我正在使用此功能将文件上传到磁盘:

$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' 无法重命名。它已经存在。

有什么想法吗?

谢谢。

4

1 回答 1

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

于 2012-02-28T01:51:07.543 回答