如何通过FOSRestBundle处理文件


How to work with files through FOSRestBundle

我正在使用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