2012-02-27 7 views
0

iは、ディスクにファイルをアップロードするには、この機能を使用しています:ファイル '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フィルタは、発生しているように見える既定では、ターゲットファイルを既定で上書きしません。

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

は、詳細はZend_Filter_File_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オプションを渡す必要があります。

+0

この質問に興味をお持ちいただきありがとうございます、私は希望を失っていました:)その「上書き」が機能しました。クール – Patrioticcow

+2

あなたは大歓迎です。このエラーは、一時ファイルの名前が記載されていて「それは既に存在しています」という誤解を招きます。 「リネーム対象はすでに存在しています」または「あて先ファイルはすでに存在しています」と言うと、はるかに明確になります。 – drew010

+0

ありがとうDude :) ...それは私を助ける – chhameed

関連する問題