【问题标题】:File upload with in Spring MVC without adding any additional parameter in controller method在 Spring MVC 中使用文件上传,而不在控制器方法中添加任何其他参数
【发布时间】:2018-03-08 20:10:44
【问题描述】:

我正在使用spring boot 2。我的新任务是文件上传。我已经做到了。但是我被要求在不向控制器方法(如 @RequestParam("files") MultipartFile files[] )添加其他参数的情况下执行此操作。我想从请求中获取这个而不是添加这个参数。

我该如何解决这个问题?

我正在添加我当前的代码。

@RequestMapping(value="/uploadMultipleFiles", method=RequestMethod.POST)
    public @ResponseBody String handleFileUpload( @RequestParam("files") MultipartFile files[]){
            try {
                String filePath="c:/temp/kk/";
                StringBuffer result=new StringBuffer();
                byte[] bytes=null;
                result.append("Uploading of File(s) ");

                for (int i=0;i<files.length;i++) {
                    if (!files[i].isEmpty()) {
                        bytes = files[i].getBytes();
                        BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(new File(filePath+files[i].getOriginalFilename())));
                        stream.write(bytes);
                        stream.close();

                       result.append(files[i].getOriginalFilename() + " Ok. ") ;
                    }
                    else
                        result.append( files[i].getOriginalFilename() + " Failed. ");

            }
                return result.toString();

            } catch (Exception e) {
                return "Error Occured while uploading files." + " => " + e.getMessage();
            }

    } 

【问题讨论】:

  • 所以你想让它更复杂而不是更简单......

标签: spring spring-mvc file-upload


【解决方案1】:

可以从HttpRequest获取文件:

@RequestMapping(value="/uploadMultipleFiles", method=RequestMethod.POST)
    public String handleFileUpload(HttpRequest request){

        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;

       Map<String, MultipartFile> yourFiles = multipartRequest.getFileMap();

        return "All is Ok!";
    }

【讨论】:

    【解决方案2】:

    我的示例代码。

    @RequestMapping(value = "/multiple/upload", method = RequestMethod.POST)
    public @ResponseBody String test(@RequestParam(value = "files[]") List<MultipartFile> files,
            HttpServletRequest req) {
    
        MultipartFileWriter writer = new MultipartFileWriter();
        String folderPath = "/file/";
    
        for (MultipartFile file : files) {
            writer.writeFile(file, folderPath, req);
        }
    
        return "success";
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-13
      • 1970-01-01
      • 2014-07-02
      • 1970-01-01
      • 1970-01-01
      • 2016-12-10
      • 1970-01-01
      相关资源
      最近更新 更多