Spring HTTP文件上载:验证文件大小

时间:2016-10-21 06:39:30

标签: java spring file-upload

我有一个关于在基于Spring的HTTP文件上传服务中验证文件大小的基本问题。我正在使用Spring的SELECT name,crdate FROM dbo.sysobjects WHERE (type = 'P') order by name SELECT [schema] = OBJECT_SCHEMA_NAME([object_id]),name FROM sys.procedures; select OBJECT_SCHEMA_NAME([object_id]) as 'SchemaName',name as 'SP Name ' , create_date,modify_date FROM sys.procedures order by OBJECT_SCHEMA_NAME([object_id]), name 来执行文件上传。

我的问题是,只有在完成整个上传后,org.springframework.web.multipart.MultipartFile方法返回大小?如果是,那么根据大小限制文件的正确方法是什么?

  

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

3 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

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

$('#myFile').bind('change', function() {

  //this.files[0].size gets the size of your file.
  alert(this.files[0].size);

});

答案 2 :(得分:0)

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