SpringMVC 两种上传文件方法

本文介绍了使用SpringMVC进行文件上传的具体步骤,包括配置multipartResolver以支持多部分文件上传,自定义异常处理来捕获文件大小超限等问题,并展示了如何在页面上实现文件选择与验证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考:[url]http://blog.youkuaiyun.com/yyywyr/article/details/44571353[/url]
[url]http://blog.youkuaiyun.com/a1314517love/article/details/24183273[/url]

[list]
[*]第一步:配置spring
[/list]
<!-- 上传使用的多部分文件配置 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="UTF-8"/>
<!--1024*1024*10000即1000M-->
<property name="maxUploadSize" value="200000" />
<property name="maxInMemorySize" value="40960" />
<!--resolveLazily属性启用是为了推迟文件解析,以便在UploadAction 中捕获文件大小异常 -->
<property name="resolveLazily" value="true"/>
</bean>

[list]
[*]第二步:在上传action中自己捕获异常
[/list]
@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";
}

[list]
[*]第三步:界面
[/list]
<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>


[list]
[*]第四步:接收form表单普通的参数
[/list]
其方法为:将HttpServletRequest req强转成MultipartHttpServletRequest req后,通过 req.getParameter("id");获取

HttpServletRequest request;
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
MultipartFile file = multipartRequest.getFile("file");
String id = multipartRequest.getParameter("id");
String fileName = file.getOriginalFilename();


参考:[url]http://blog.youkuaiyun.com/z69183787/article/details/44152287[/url]

spring mvc文件上传(单个文件上传|多个文件上传)
[url]http://www.cnblogs.com/dengfukui/p/6252798.html[/url]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值