2011-12-29 4 views
0

Zendフレームワークでファイルをアップロードしようとしています。私は自分のフォームでコードを次している:私は、NetBeansを使用していると私は、パブリックフォルダの下に1つのという名前のフォルダの画像を持っているZend FrameworkのZend_Form_Element_FileのsetDestinationメソッドで指定するパス

$this->addElementPrefixPath('App', 'App/'); 
      $this->setName('upload'); 
    $this->setAttrib('enctype', 'multipart/form-data'); 

    $description = new Zend_Form_Element_Text('description'); 
    $description->setLabel('Description') 
      ->setRequired(true) 
      ->addValidator('NotEmpty'); 
    $file = new Zend_Form_Element_File('file'); 
    $path="/images"; 
    $file->setDestination($path) 
      ->setLabel('File') 
      ->setRequired(true) 
      ->addValidator('NotEmpty'); 

    $submit = new Zend_Form_Element_Submit('submit'); 

    $submit->setLabel('Upload'); 

    $this->addElements(array($description, $file, $submit)); 

。私はすべてのファイルが画像フォルダにアップロードされていることをしたいが、私はプロジェクトを実行するときには、

などのエラーは、指定した宛先はディレクトリではありません与えますか、私はそれをC:\Users\398853\Documents\NetBeansProjects\ZendWithFileUpload\public\imagesとしてフルパスを与える場合

存在しません。ファイルは画像フォルダにアップロードされます。しかし、私が与えるとき$path='/images'それは上記のエラーを言う 'なぜ?与えられた道は何ですか?ありがとう。

答えて

4

は(は/ var/www /の...またはc desitnationフォルダへの絶対パスをsettedする必要があり、使用する必要がありますあなたは勝利者です)。

ただし、関数getcwd()またはrealpath(dirname(FILE))を使用して絶対パスを取得することをお勧めします。

まず、index.phpファイル(通常はパブリックフォルダ内にある)に定数(たとえば名前PUBLIC_PATH)を定義します。フォルダをアップロードするために、あなたの実際のパスに接頭辞として変数PUBLIC_PATH代わりに足す文字列「は/ var/www /の...」を使用することができます

defined('PUBLIC_PATH') 
|| define('PUBLIC_PATH', realpath(dirname(__FILE__))); 

この方法です。あなたの「画像」フォルダが「パブリック」フォルダに位置している場合

だから、あなたは利用者、そのような構造は必要があります。

$file->setDestination(PUBLIC_PATH . '/images'); 

このコードはまた、ウェブサーバへのローカルホストからのアップロードプロジェクトの後に動作します。

0

ブートストラップコードでは、アプリケーションのルートフォルダを設定する必要があります。

アプリケーションフォルダ内のサブフォルダ(シナリオ内の画像など)のパスを取得する場合は、この変数を使用してフォルダ名を追加する必要があります。あなたが画像を取得したいのように、フォルダのパスを取得したい

あなたのブートストラップコードが公開ルートフォルダの下にあるアプリケーションフォルダ内にある場合は、アプリケーションの他の場所で

Zend_Registry::set('APP_ROOT', dirname(dirname(__FILE__))); 

、場合ときに/ウェブサーバ/ ...:フォルダパスは、パブリックフォルダの下に、uがSetDestinationで

Zend_Registry::get('APP_ROOT') . "/images"; 
1

public function getFileUploadLocation() { 
    $config = $this->getServiceLocator()->get('config'); 
    return $config['module_config']['upload_location']; 
} 

コントローラを追加し を使用

return array (
    .... 
    //other settings 
    'module_config' => array(
     'upload_location' => __DIR__.'/../../../data/uploads' 
    ) 
); 

をmodule.config.phpする設定を追加....

$uploadPath = $this->getFileUploadLocation(); 
$adapter->setDestination($uploadPath); 

....

関連する問題