我正在使用FOS Rest Bundle创建一个Rest API,在这里我可以处理文件上传。问题是我不知道如何发送和接收文件。我唯一的文件传输经验是使用PHP的$_FILES,它对我帮助不大。
我想用Base64编码并用JSON发送文件,但由于文件可能很大,所以这不是一个可行的解决方案。到目前为止,我正在考虑用json发送元数据的请求和另一个发送文件的请求。我没有找到任何关于如何处理文件传输的例子,因为除了我之外,似乎每个人都知道它是如何工作的。
我对符号2也很陌生,但我了解基本概念。
我几个月前就解决了这个问题:
在您的控制器(APIController)中,您使用此操作(方法)
public function postUploadAction(Request $request)
{
$uploadedfile = $this->getRequest()->files->get('file');
$directory = __DIR__.'/../../../../web/uploads/pinkSheet';
foreach($request->files as $uploadedFile) {
$file = $uploadedFile->move($directory, $uploadedFile->getClientOriginalName());
}
return 'file uploaded.';
}
对于你的客户(在我的情况下,我从安卓应用程序收到了数据),你只需将文件以html格式发送,并附上一个密钥(我称之为"文件"),你就可以测试它(在我情况下,我们使用了谷歌chrom扩展Postman
记得在邮递员上选择"表单数据"我希望它能帮助你。
FOSRestBundle与否,您可以使用Request提供的$files
来获取上传的文件。
use Symfony'Component'HttpFoundation'Request;
public function uploadAction(Request $request)
{
$file = $request->files->get('file');
//do what ever you want to do with the files
}
如果您想使用FOSRestBundle提供的帮助程序,请选中此项https://github.com/FriendsOfSymfony/FOSRestBundle/pull/1097