spring mvc CommonsMultipartResolver文件上传maxUploadSize限制大小
2016-04-24 17:35
585 查看
第一步:配置sping
Xml代码
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!--1024*200即200k-->
<property name="maxUploadSize" value="204800"/>
<!--resolveLazily属性启用是为了推迟文件解析,以便在UploadAction 中捕获文件大小异常-->
<property name="resolveLazily" value="true"/>
</bean>
第二步:在上传action中自己捕获异常
Java代码
@RequestMapping
public void execute(
@RequestParam(required = false) MultipartFile file,
@RequestParam(value = "file_info_id", required = false) Integer fileInfoId,
ModelMap model, HttpServletRequest request) throws Exception {
if (file == null || file.isEmpty()) {
return;
}
byte[] bytes = file.getBytes();
……………………
………………
}
@ExceptionHandler(Exception.class)
public ModelAndView handleException(Exception ex,HttpServletRequest request) {
Map<Object, Object> model = new HashMap<Object, Object>();
if (ex instanceof MaxUploadSizeExceededException){
model.put("errors", "文件应不大于 "+
getFileKB(((MaxUploadSizeExceededException)ex).getMaxUploadSize()));
} else{
model.put("errors", "不知错误: " + ex.getMessage());
}
return new ModelAndView("/common/file/upload", (Map) model);
}
private String getFileKB(long byteFile){
if(byteFile==0)
return "0KB";
long kb=1024;
return ""+byteFile/kb+"KB";
}
private String getFileMB(long byteFile){
if(byteFile==0)
return "0MB";
long mb=1024*1024;
return ""+byteFile/mb+"MB";
}
第三步:界面
Html代码
<script type="text/javascript">
$(function() {
$('#frmupload1').submit(function() {
if ($('#file1').val() == '') {
alert('请选择上传导入文件!');
$('#file1').focus();
return false;
}else{
if(!isvalidatefile($('#file1').val()))
return false;
}
});
$('#frmupload2').submit(function() {
if ($('#file2').val() == '') {
alert('请选择上传导入文件!');
$('#file2').focus();
return false;
}else{
if(!isvalidatefile($('#file2').val()))
return false;
}
});
});
function isvalidatefile(obj) {
var extend = obj.substring(obj.lastIndexOf(".") + 1);
//alert(extend);
if (extend == "") {
} else {
if (!(extend == "xls" )) {
alert("请上传后缀名为xls(Excel2003)或xlsx(Excel2007)的文件!");
return false;
}
}
return true;
}
<body>
<h1>上传文件</h1>
<form action="" method="post" enctype="multipart/form-data" onsubmit="return checkSubmit();">
<p>请选择文件:</p>
<p ${not empty errors ?"style='color : red;'":""}>${errors}</p>
<input type="file" name="file" id="file"/> <input type="submit" value="确定"/>
</form>
</body>
Xml代码
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!--1024*200即200k-->
<property name="maxUploadSize" value="204800"/>
<!--resolveLazily属性启用是为了推迟文件解析,以便在UploadAction 中捕获文件大小异常-->
<property name="resolveLazily" value="true"/>
</bean>
第二步:在上传action中自己捕获异常
Java代码
@RequestMapping
public void execute(
@RequestParam(required = false) MultipartFile file,
@RequestParam(value = "file_info_id", required = false) Integer fileInfoId,
ModelMap model, HttpServletRequest request) throws Exception {
if (file == null || file.isEmpty()) {
return;
}
byte[] bytes = file.getBytes();
……………………
………………
}
@ExceptionHandler(Exception.class)
public ModelAndView handleException(Exception ex,HttpServletRequest request) {
Map<Object, Object> model = new HashMap<Object, Object>();
if (ex instanceof MaxUploadSizeExceededException){
model.put("errors", "文件应不大于 "+
getFileKB(((MaxUploadSizeExceededException)ex).getMaxUploadSize()));
} else{
model.put("errors", "不知错误: " + ex.getMessage());
}
return new ModelAndView("/common/file/upload", (Map) model);
}
private String getFileKB(long byteFile){
if(byteFile==0)
return "0KB";
long kb=1024;
return ""+byteFile/kb+"KB";
}
private String getFileMB(long byteFile){
if(byteFile==0)
return "0MB";
long mb=1024*1024;
return ""+byteFile/mb+"MB";
}
第三步:界面
Html代码
<script type="text/javascript">
$(function() {
$('#frmupload1').submit(function() {
if ($('#file1').val() == '') {
alert('请选择上传导入文件!');
$('#file1').focus();
return false;
}else{
if(!isvalidatefile($('#file1').val()))
return false;
}
});
$('#frmupload2').submit(function() {
if ($('#file2').val() == '') {
alert('请选择上传导入文件!');
$('#file2').focus();
return false;
}else{
if(!isvalidatefile($('#file2').val()))
return false;
}
});
});
function isvalidatefile(obj) {
var extend = obj.substring(obj.lastIndexOf(".") + 1);
//alert(extend);
if (extend == "") {
} else {
if (!(extend == "xls" )) {
alert("请上传后缀名为xls(Excel2003)或xlsx(Excel2007)的文件!");
return false;
}
}
return true;
}
<body>
<h1>上传文件</h1>
<form action="" method="post" enctype="multipart/form-data" onsubmit="return checkSubmit();">
<p>请选择文件:</p>
<p ${not empty errors ?"style='color : red;'":""}>${errors}</p>
<input type="file" name="file" id="file"/> <input type="submit" value="确定"/>
</form>
</body>
相关文章推荐
- java毕向东听课笔记25(集合框架-Set集合TreeSet)
- 【JavaSe】IO之FileReader
- java集合总结
- javaweb学习总结(二十)——JavaBean总结
- 实习面经--小米 java后台开发 v1
- 第04篇 JDK版本导致Unsupported major.minor version 52.0 error
- Spring Web MVC 入门分析
- springMVC 学习笔记
- Gradle学习系列之六——使用Java Plugin
- 正则的使用6
- JAVA集合框架之set
- 正则的使用5
- java ArrayList集合分析
- Java NIO系列教程(10):DatagramChannel
- java对象排序
- Java NIO系列教程(9):ServerSocketChannel
- 正则的使用4
- Java NIO 系列教程(8):SocketChannel
- Java中equals和==的区别
- Java NIO系列教程(7):FileChannel