我是symfony4的新手,并且我遵循youtube tutorial,使用FOSRestBundle创建待办事项列表应用程序。
我遇到的问题是我无法使用PATCH方法将图像上传到服务器。
这是控制器的功能:
use FOS\RestBundle\Request\ParamFetcher;
/**
* @Rest\FileParam(name="image", description="The background of the list", nullable=false, image=true)
* @param ParamFetcher $paramFetcher
* @param int $id
* @return int
*/
public function backgroundListsAction(ParamFetcher $paramFetcher, int $id)
{
var_dump($paramFetcher->get('image'));
return count($_FILES);
}
这是bin/console debug:router
日志:
------------------ -------- -------- ------ ----------------------------
Name Method Scheme Host Path
------------------ -------- -------- ------ ----------------------------
background_lists PATCH ANY ANY /api/lists/{id}/background
get_lists GET ANY ANY /api/lists
get_list GET ANY ANY /api/lists/{id}
post_lists POST ANY ANY /api/lists
get_lists_tasks GET ANY ANY /api/lists/{id}/tasks
put_lists PUT ANY ANY /api/lists
------------------ -------- -------- ------ ----------------------------
我尝试了几种选择:
1)正如教程的作者使用curl进行的那样,对我不起作用:
curl -X POST -F image=@/home/jake/Pobrane/matrixbg.jpeg -F method=PATCH http://localhost:8000/api/lists/1/background
我收到一个错误:
{"code":405,"message":"No route found for \"POST \/api\/lists\/1\/background\": Method Not Allowed (Allow: PATCH)"}
2)我也尝试过这种卷曲方式:
curl -X PATCH -F image=@/home/jake/Pobrane/matrixbg.jpeg http://localhost:8000/api/lists/1/background
我遇到的错误是:
{"code":400,"message":"Parameter \"image\" of value \"NULL\" violated a constraint \"This value should not be null.\""}
3)所以我最后尝试的是使用邮递员,最终结果与第二种情况相同