SpringMVC使⽤MultipartFile类实现⽂件上传-实例
⼀、配置⽂件:
SpringMVC ⽤的是 的MultipartFile来进⾏⽂件上传 所以我们⾸先要配置MultipartResolver:⽤于处理表单中的file
<!-- 配置MultipartResolver ⽤于⽂件上传使⽤spring的CommosMultipartResolver -->
<beans:bean id="multipartResolver" class="org.springframework.web.multipartmons.CommonsMultipartResolver"
p:defaultEncoding="UTF-8"
p:maxUploadSize="10485760"
p:uploadTempDir="fileUpload/temp"
>
</beans:bean>
其中属性详解:
defaultEncoding="UTF-8" 是请求的编码格式,默认为iso-8859-1
maxUploadSize="10485760" 是上传⽂件的⼤⼩,单位为字节
uploadTempDir="fileUpload/temp" 为上传⽂件的临时路径。
⼆、前端界⾯:
<html>
<head>
<title>信息导⼊</title>
</head>
<body>
<form action="${ctx}/deviceAccount/uploadFiles" enctype="multipart/form-data" method="post">getsavefilename
上传⽤户:
<input type="text" name="username" value="admin">
<br/>
导⼊信息xml⽂件:<input type="file" name="files">
<br/>
<input type="submit" value="提交">
</form>
</body>
</html>
注意要在form标签中加上enctype="multipart/form-data"表⽰该表单是要处理⽂件的,这是最基本的东西,很多⼈会忘记然⽽当上传出错后则去程序的错误,却忘了这⼀点
三、java端的代码
@RequestMapping(value = "uploadFiles", method = RequestMethod.POST)
@ResponseBody
public String filesUpload(HttpServletRequest request, HttpServletResponse response, @RequestParam("files") MultipartFile[] files) {
//消息提⽰
String message = "";
//判断file数组不能为空并且长度⼤于0
if(files!=null&&files.length>0){
//循环获取file数组中得⽂件
for(int i = 0;i<files.length;i++){
MultipartFile file = files[i];//根据l中的配置,file的最⼤size限定为10M=10*1024*1024(B)=10485760 bytes
MultipartFile file = files[i];//根据l中的配置,file的最⼤size限定为10M=10*1024*1024(B)=10485760 bytes
String fileElemName = Name();
if(fileElemName==null || im().equals("")){
continue;
}
String fileName = OriginalFilename();
String fileExtName = fileName.substring(fileName.lastIndexOf(".")+1);
if(fileExtName==null || !fileExtName.equalsIgnoreCase("xml"))
{
message += OriginalFilename()+"⽂件类型不是xml⽂件!";
return message;
}
//保存⽂件
boolean res = saveFile(file,request);
if(res)
{
message += OriginalFilename()+"⽂件上传服务器成功! ";
//
}
else
{
message += OriginalFilename()+"⽂件上传服务器失败!";
return message;
}
}
}
else
{
message = "未检测到需要导⼊的xml⽂件。";
}
return message;
}
private boolean saveFile(MultipartFile file,HttpServletRequest request) {
// 判断⽂件是否为空
if (!file.isEmpty()) {
try {
String savePath = Session().getServletContext().getRealPath("/")+accountFolder+"/";
File file_folder = new File(savePath);
//判断上传⽂件的保存⽬录是否存在
if (!ists() && !file_folder.isDirectory()) {
System.out.println(savePath+"⽬录不存在,需要创建");
/
/创建⽬录
file_folder.mkdir();
}
// ⽂件保存
String filePath = savePath + OriginalFilename();
// 转存⽂件
return true;
} catch (Exception e) {
e.printStackTrace();
}
}
return false;
}
说明:1、@ResponseBody这个注释设置了返回值是⽂本内容,⽽不是url地址;
2、@RequestParam("files") MultipartFile[] files 函数的这个参数,是springMVC框架解析好的从前端传回的⽂件;参数的那个“files”,必须与前端界⾯上的input的name⼀致。
四、MultipartFile类常⽤的⼀些⽅法
String getContentType()//获取⽂件MIME类型
InputStream getInputStream()//后去⽂件流
String getName() //获取表单中⽂件组件的名字
String getOriginalFilename() //获取上传⽂件的原名
long getSize() //获取⽂件的字节⼤⼩,单位byte
boolean isEmpty() //是否为空
void transferTo(File dest) //保存到⼀个⽬标⽂件中。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论