我想使用翻新的多部分请求上传视频。
以下方法将POST请求发送到 / video / {id} / data ,如果请求成功,则返回true,否则返回相应的HTTP错误状态:
//..
@Controller
public class VideoController {
//....
@Multipart
@RequestMapping(value = "/video/{id}/data", method = RequestMethod.POST)
public boolean setVideoData(@PathVariable("id") long id, @Part("data") TypedFile videoData, HttpServletResponse response) {
try {
// save the video data
// use a VideoFileHelper to store the file...
// VideoFileHelper.saveVideoData(videoData.in());
//...
response.setStatus(200);
return true;
} catch (IOException e) {
e.printStackTrace();
response.setStatus(404);
return false;
}
}
}
使用以下代码上传视频文件时,
File testVideoData = new File("src/test/resources/test.mp4");
TypedFile file = new TypedFile("video/mp4", testVideoData);
boolean result = setVideoData(1, file);
^
我收到此错误:
retrofit.RetrofitError:500服务器错误
org.springframework.web.util.NestedServletException:请求 处理失败;嵌套异常为 org.springframework.beans.BeanInstantiationException:无法 实例化Bean类[retrofit.mime.TypedFile]:无默认值 找到构造函数;嵌套异常为 java.lang.NoSuchMethodException:
retrofit.mime.TypedFile.<init>()
此错误与 setVideoData(...)的实现无关,这就是为什么我在try bloc中提交了指令。