我有一个关于在基于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。”
答案 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
仅检查服务器端的文件大小。如果您想在上传时检查文件大小,则需要使用客户端javascript
或jquery
。 javascript
或jquery
可用于在上传时检查文件端。
$('#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”。