访问已发布的表单值Jquery ajax fileUploader

时间:2014-08-08 11:51:00

标签: spring-mvc jquery-file-upload

我使用示例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值。

2 个答案:

答案 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参数。