2

私はこれまでSymfonyでファイルのアップロードをあまり行っていませんが、1.2以降でそれを行う方法を見つけようとしています。

アクションに送信されたファイルを取得し、次の方法で取得できます。

$files = $request->getFiles();

ファイルをファイルシステムに保存するにはどうすればよいですか?古い1.0の減価償却されたコード以外のドキュメントは表示されません。

これはどういうわけかフォームシステムに移動されたようですが、私が持っているこの1回限りのページに固有のものはなく、いくつかのファイルをアップロードするだけです。

これらのファイルをディスクに保存するにはどうすればよいですか。

4

4 に答える 4

6

symfony フォームを使用してファイルをアップロードする予定がない場合は、次のコードも機能します。

foreach($request->getFiles() as $file)
{
    move_uploaded_file($file["tmp_name"], $directory . "/" . $file['name']);
}
于 2009-12-23T21:46:38.703 に答える
3

アクション内で、パラメータをフォームにバインドした後:

  $file = $your_form->getValue('your_file_field');

  $filename  = $file->getOriginalName(); //or whatever name
  $extension = $file->getExtension($file->getOriginalExtension());
  $file->save(sfConfig::get('sf_upload_dir').'/'.$filename.$extension);

ところで、Symfony 1.2のドキュメントは、対応するSymfony Forms in Actionブックにあります:第02章ファイルのアップロード

enctype="multipart/form-data"ps: htmlフォームに手動でを追加することを忘れないでください!

于 2009-12-22T12:51:19.880 に答える
1

$request->getFiles() を使用してアップロードされたファイルにアクセスできない理由をまだ探している場合は、enctype="multipart/form-data".

実際には、次のようなフォームが必要です。

<form enctype="multipart/form-data" action="/yourdestination" method="post">
   <input type="file" name="somedummyfile"/>
   <input type="submit" value="Send"/>
</form>

そして、あなたの行動は次のようにする必要があります:

$dummyfile = $request->getFiles('somedummyfile');
echo $dummyfile['tmp_name']; // Current filepath
echo $dummyfile['name']; // filename

それが役に立てば幸い !

于 2013-01-17T17:27:03.007 に答える
1

ありがとう、友よ。このコードを 2 日間探しています。私はsymfonyを試していますが、phpは初めてです。symfony の私のコード。

$this->filetype = $_FILES['file']['type'];
foreach ( $request -> getFiles () as  $file )
{ 
    if(move_uploaded_file ( $file [ "tmp_name" ],  sfConfig::get('sf_upload_dir').'/myfile/'.  $file [ 'name' ]))
    { 
        $this-setTemplate('success');
    } 
    else
    {
        $this-setTemplate('failure')
    }
} 

同様に を使用し$filetypeて、アップロードされたファイルの種類を確認します。PHPファイル参照を確認してください。ファイルの種類の場合。楽しみ..

于 2010-12-30T15:48:17.333 に答える