2

到目前为止,我还没有在 Symfony 中进行太多文件上传,我正在尝试弄清楚如何在 1.2+ 中进行上传

我可以获取提交给操作的文件并通过以下方式检索它们:

$files = $request->getFiles();

如何获取然后将文件保存到文件系统?除了旧的 1.0 折旧代码之外,我没有看到任何文档。

看起来这已经以某种方式移动到表单系统中,但我没有针对这个一次性页面的特定内容,除了上传一些文件之外什么都不做。

如何将这些文件保存到光盘。

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 Forms in Action 书中找到 Symfony 1.2 的文档:第 02 章文件上传

ps:不要忘记手动添加enctype="multipart/form-data"到您的 html 表单中!

于 2009-12-22T12:51:19.880 回答
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 回答
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 回答