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 に答える