【问题标题】:Spring HTTP File Upload: Validation of File SizeSpring HTTP 文件上传:文件大小验证
【发布时间】:2016-10-21 06:39:30
【问题描述】:

我有一个关于在基于 Spring 的 HTTP 文件上传服务中验证文件大小的基本问题。我正在使用 Spring 的org.springframework.web.multipart.MultipartFile 来执行文件上传。

我的问题是multipartFile.getSize() 方法是否仅在完成整个上传后才返回大小?如果是,根据大小限制文件的正确前瞻性方法是什么?

注意:我问这个问题的原因是因为我不希望最终用户上传 1 GB 文件并在之后收到错误消息 一个小时说,“抱歉,允许的最大文件大小为 2 KB。”

【问题讨论】:

    标签: java spring file-upload


    【解决方案1】:

    回答你的第一个问题,multipartFile.getSize() 方法是否只有在整个上传完成后才返回大小?

    -不,您在完成整个上传之前获得 multipartFile.getSize()。

    @RequestMapping(value = "/CSVfileupload")
    public @ResponseBody String callCSVFileUpload(
        @RequestParam("CSVfilepath") MultipartFile multipartFile, HttpSession session,HttpServletRequest request) throws IOException {
         //get the file size before doing any operation 
         logger.info("Controller - callCSVFileUpload() multipartFile.getSize()="+ multipartFile.getSize());
         InputStream inputStream =  new BufferedInputStream(multipartFile.getInputStream());
         JsonArray response=null;
         try{
             //you business logic 
            }
         catch(Exception e){
            e.printStackTrace();
            }
            logger.info(" response.toString()="+ response.toString());
            return response.toString();
        }//end of callCSVFileUpload
    

    您可以在 application-context.xml 文件中使用 CommonsMultipartResolver。

    <bean id="multipartResolver"
            class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
            <property name="maxUploadSize" value="50000000" />
    </bean>
    

    【讨论】:

    • 这会在文件从客户端传输到服务器之前验证大小吗?
    • 否。如果您想在文件从客户端传输到服务器之前验证大小,您必须使用 jquery/javascript 验证。
    【解决方案2】:

    MultipartFile 只检查服务器端的文件大小。如果您想在上传时检查文件大小,您需要使用客户端javascriptjqueryjavascriptjquery 可用于在上传时检查文件端。

    $('#myFile').bind('change', function() {
    
      //this.files[0].size gets the size of your file.
      alert(this.files[0].size);
    
    });
    

    【讨论】:

      【解决方案3】:

      我认为使用它的人应该是前端程序员 (javascript/h5),他们应该在用户上传之前检查大小。然后服务器端操作员需要设置一些属性,如 http请求的“maxRequestLength”或“upload_max_filesize”。

      【讨论】:

      • 如果是 REST API 怎么办?
      猜你喜欢
      • 2011-06-24
      • 1970-01-01
      • 2011-04-12
      • 2012-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多