如何通过 FOSRestBundle 处理文件
How to work with files through FOSRestBundle
我正在使用 FOS Rest Bundle 创建一个 REST API,我想可以在其中处理文件上传。问题是我不知道如何发送和接收文件。我唯一的文件传输经验是使用 PHP 的 $_FILES,它对我帮助不大。
我考虑过使用 Base64 编码并以 JSON 发送文件,但由于文件可能非常大,所以这不是一个可行的解决方案。截至目前,我正在考虑使用 json 发送元数据请求和发送文件的另一个请求。我没有找到任何关于如何处理文件传输的示例,因为似乎每个人都知道它是如何工作的。
我对 symfony2 也很陌生,但我了解基本概念。
几个月前我已经解决了这个问题:
在您的控制器 (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.';
}
并且对于您的客户(在我的例子中,我从 Android 应用程序收到数据),您只需发送文件,因为它会以 html 形式带有密钥(我调用我的 "file") 你可以测试它(在我的例子中,我使用了 google chrom 扩展 Postman
记得在邮递员上选择"form-data"
希望对你有帮助。
不管有没有FOSRestBundle,都可以使用Request提供的$files
获取上传的file/s
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
我正在使用 FOS Rest Bundle 创建一个 REST API,我想可以在其中处理文件上传。问题是我不知道如何发送和接收文件。我唯一的文件传输经验是使用 PHP 的 $_FILES,它对我帮助不大。
我考虑过使用 Base64 编码并以 JSON 发送文件,但由于文件可能非常大,所以这不是一个可行的解决方案。截至目前,我正在考虑使用 json 发送元数据请求和发送文件的另一个请求。我没有找到任何关于如何处理文件传输的示例,因为似乎每个人都知道它是如何工作的。
我对 symfony2 也很陌生,但我了解基本概念。
几个月前我已经解决了这个问题:
在您的控制器 (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.';
}
并且对于您的客户(在我的例子中,我从 Android 应用程序收到数据),您只需发送文件,因为它会以 html 形式带有密钥(我调用我的 "file") 你可以测试它(在我的例子中,我使用了 google chrom 扩展 Postman
记得在邮递员上选择"form-data" 希望对你有帮助。
不管有没有FOSRestBundle,都可以使用Request提供的$files
获取上传的file/s
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