我使用示例here
实现了JQuery FileUpload我想用JQuery fileupload传递额外的参数,所以我用 formdata 字段传递值。 Plz参考代码片段。
$('#upload').fileupload({
dataType : 'json',
sequentialUploads : true,
formData : {
projectId : '222'
},
done : function(e, data) {
$.each(data.result, function(index, file) {
console.log(file);
});
}
});
我可以看到已发布的“projectId”值但无法访问它。
Firebug显示以下POST信息:
-----------------------------2784773938064489741662764824
内容 - 处置:表单数据; name =“projectId”222
----------------------------- 2784773938064489741662764824 内容处理:表格数据; NAME = “文件”; filename =“account.png”内容类型:image / png PNG
但是,我可以通过我的控制器访问该文件,但不能访问 projectId 。
@RequestMapping(value = "/ajaxUpload", method = RequestMethod.POST)
public @ResponseBody List<ProjectAttachmentDto> upload( @RequestParam("file") MultipartFile file, @RequestParam("projectId") String projectId ) {
// Do custom steps here
// i.e. Save the file to a temporary location or database
System.out.println("Writing file to disk...done");
List<ProjectAttachmentDto> uploadedFiles = new ArrayList<ProjectAttachmentDto>();
for (ProjectAttachmentDto projectAttachmentDto : uploadedFiles) {
System.out.println(projectAttachmentDto.getProjectID());
}
ProjectAttachmentDto u = new ProjectAttachmentDto(1,
file.getOriginalFilename(), file.getSize(),
"http://localhost:8080/" + file.getOriginalFilename());
uploadedFiles.add(u);
return uploadedFiles;
}
我收到错误 NetworkError:405 Method Not Allowed
我想在控制器中访问projectId值。
答案 0 :(得分:0)
我在我的一个项目中做了类似的事情:
@RequestMapping(value = "/ajaxUpload", method = RequestMethod.POST)
public @ResponseBody List<ProjectAttachmentDto> upload( @RequestParam("file")
MultipartFile file, @RequestBody MultiValueMap<String, String> p_parametresAjax ) {
// Récupération du projectId
String projectId = p_parametresAjax.get("projectId").get(0);
...
}
答案 1 :(得分:0)
@RequestMapping(value = "/ajaxUpload", method = RequestMethod.POST)
public @ResponseBody ProjectAttachmentDto upload(@RequestParam Integer projectId,
@RequestParam("file") MultipartFile file) {
System.out.println(projectId);
}
通过上面的代码段解决了这个问题。好像我有一些与春天和日食有关的问题。代码没有太大区别,我尝试在另一个系统中实现,我能够获取projectId参数。