【问题标题】:Accessing posted form value Jquery ajax fileUploader访问已发布的表单值 Jquery ajax fileUploader
【发布时间】:2014-08-08 11:50:59
【问题描述】:

我已经使用示例 here 实现了 JQuery FileUpload

我想通过 JQuery 文件上传传递额外的参数,所以我使用 formdata 字段来传递值。请参考code-sn-p。

$('#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 内容处置:表单数据;名称=“文件”; 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 值。

【问题讨论】:

    标签: spring-mvc jquery-file-upload


    【解决方案1】:

    我在我的一个项目中做了这样的事情:

    @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);
        ...
    }
    

    【讨论】:

    • 在添加 @RequestBody MultiValueMap p_parametresAjax 后出现错误:415 Unsupported Media Type。
    【解决方案2】:
    @RequestMapping(value = "/ajaxUpload", method = RequestMethod.POST)
    public @ResponseBody ProjectAttachmentDto upload(@RequestParam Integer projectId,
            @RequestParam("file") MultipartFile file) {
    
        System.out.println(projectId);
    }
    

    通过上面的代码 sn-p 解决了这个问题。好像我有一些与春天和日食有关的问题。代码方面没有太大区别,我尝试在另一个系统中实现,并且我能够获取 projectId 参数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-14
      • 1970-01-01
      • 2012-09-21
      • 2014-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多