繁体   English   中英

处理Symfony 2中的plupload文件上传

[英]Handling plupload file uploads in Symfony 2

我正在尝试编写一个控制器来接受来自Plupload插件的文件上传。 作为一个额外的乐趣,上传来自不同的URL,所以我必须自己设置Access-Control-Allow-Origin标头。 到目前为止,我已经这样做了:

/**
 * @Route("/frontEnd/file/upload.{_format}")
 */
public function upload(Request $request) {
    $response = new Response();
    $response->setContent(json_encode(array('hello' => 'world')));
    $response->setStatusCode(200);
    $response->headers->set('Access-Control-Allow-Origin', '*');
    $response->send();
}

这似乎工作。 当我使用plupload提交上传时,我看到XHR请求命中Symfony并返回JSON。 但是,我不知道如何处理实际文件并将其移动到目录中。

我在$_POST上做了一个var_dump() ,它只返回以下内容:

array(1) {
  ["name"]=>
  string(21) "wallpaper-2873928.jpg"
}

上传肯定是发送的,因为我可以看到文件的字节是开发人员工具的请求有效负载的一部分。 我是否需要使用Symfony自己的组件来处理上传? 如果是这样,怎么样? Symfony文档似乎只涵盖从文件上载表单上传。

首先,尝试使用Symfony2方式访问请求参数。 您可以在本书中获得更多信息。

上传文件时,Symfony2会自动为您创建UploadedFile实例,并将其放入请求对象的FileBag中。

您可以像下面这样访问控制器中的文件:

$files = $request->files;

如前所述,这些是临时文件。 要将它们上载到用户定义的目录中,请在对象上使用move方法。

$directory = //...

foreach ($files as $uploadedFile) {
    $name = //...
    $file = $uploadedFile->move($directory, $name);
}

变量$files现在包含File的实例。


另一方面,您也可以使用支持Plupload上传器的软件包。 我推荐OneupUploaderBundle (注意:我是这个软件包的主要开发者,我想这需要添加)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM