我有以下控制器方法,它将文件上传到我的服务器。我想为Plupload的状态返回JSON。然而,响应似乎是作为调度发送回而不是json @ResponseBody。任何想法?
private static final String RESP_SUCCESS = "{\"jsonrpc\" : \"2.0\", \"result\" : \"success\", \"id\" : \"id\"}";
private static final String RESP_ERROR = "{\"jsonrpc\" : \"2.0\", \"error\" : {\"code\": 101, \"message\": \"Failed to upload file.\"}, \"id\" : \"id\"}";
@RequestMapping(method = RequestMethod.POST)
public String uploadItem(@RequestBody MultipartFile file,
@RequestParam String name,
@RequestParam(required = false, defaultValue = "-1") int chunks,
@RequestParam(required = false, defaultValue = "-1") int chunk) {
Media media = new Media();
try {
Path path = Paths.get("/Users/username/Desktop/Test", file.getOriginalFilename());
media.setContentType(file.getContentType());
media.setFileName(file.getOriginalFilename());
media.setFileSize(file.getSize());
media.setFilePath(path.toString());
if (media.getContentType().contains("image")) {
Image image = new Image();
image.setImagePath(path.toString());
imageDao.save(image);
}
byte[] bytes = file.getBytes();
Files.write(path, bytes, StandardOpenOption.CREATE);
mediaDao.save(media);
return RESP_SUCCESS;
} catch (IOException e) {
e.printStackTrace();
}
return RESP_ERROR;
}
}
引发以下错误:
WARN - No mapping found for HTTP request with URI [/{"jsonrpc" : "2.0", "result" : "success", "id" : "id"}] in DispatcherServlet with name 'cr'
答案 0 :(得分:3)
我认为你的方法应该用@ResponseBody注释。
@RequestMapping(method = RequestMethod.POST)
@ResponseBody
public String uploadItem(@RequestBody MultipartFile file,
@RequestParam String name,
@RequestParam(required = false, defaultValue = "-1") int chunks,
@RequestParam(required = false, defaultValue = "-1")
这是Spring检查Json转换的方式:
Spring将自动处理JSON转换。
答案 1 :(得分:0)
方法必须具有String的返回类型,该注释与注释分开(结果将用作响应主体)。
@ResponseBody不是返回类型,或者根本不是类型!这是一个注释。
文字内容&在上一个答案中提出的语法是非常错误的,尽管我在其他方面给予了赞誉。
我的建议:
@RequestMapping(method = RequestMethod.POST)
@ResponseBody
public String uploadItem(@RequestBody MultipartFile file,
@RequestParam String name,
@RequestParam(required = false, defaultValue = "-1") int chunks,
@RequestParam(required = false, defaultValue = "-1")