我目前正在尝试通过rest API显示个人资料图片。 我得到了它的工作,但我觉得这不是正确的方法。
所以,在API中我有一个控制器:
public function getUserprofilepicAction(Request $request) {
/**
* Handle stuff
*/
$file = $user->getWebPath();
$type = 'image/jpeg';
header('Content-Type:'.$type);
header('Content-Length: ' . filesize($file));
readfile($file);
}
现在API调用是这样的:
<somesite>/api/user/userprofilepic.json?userId=84
为了在网页上查看图片:
<img src = <somesite>/app_dev.php/api/user/userprofilepic.json?userId=84>
所以现在我想知道,在symfony2中通过restAPI发送/查看图片的最佳做法究竟是什么?
-Cheers
答案 0 :(得分:0)
你在控制器中正确地做到了。
还有其他方法可以实现这一目标:
通过base64编码的字符串:如果要返回字符串而不是二进制数据,可以将图像编码为base64字符串,然后通过网络发送。问题是响应的大小。 base64编码的字符串比二进制数据大33%。
通过网络路径:如果您想避免阅读图片,请每次发送二进制文件,您只需返回图片的网址(例如http://example.com/u/img.jpeg)并让客户端执行请求。这样,您就不会在操作背后有任何业务逻辑。每当有人想要个人资料图片时,他只需要查询图片的网址。对于此解决方案,您需要在公共目录中上传图片,例如web/uploads/pics/
。
PS:如果您想遵循REST的想法,我会为路由做<somesite>/api/user/84/profilepicture
之类的事情。