虽然文件上传在框架中,已经不是什么困难的事情了,但自己还是开发了一个文件上传工具类,是基于springmvc文件上传的。

工具类只需要传入需要的两个参数,就可以上传到任何想要上传的路径:

参数1:HttpServletRequest request

参数2:String storePath   //文件存储相对路径 ,例如:"/upload","/image","/local/file"

返回值:上传到服务器的相对路径

一:代码实现

import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import java.util.UUID; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.multipart.commons.CommonsMultipartResolver; public class FileUploadUtils {
/**
*
* @param request
* @param storePath 文件存储相对路径 ,例如:"/upload","/image","/local/file"
* @return
*/
public static String tranferFile(HttpServletRequest request,String storePath){
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());
//先判断request中是否包涵multipart类型的数据,
if(multipartResolver.isMultipart(request)){
//再将request中的数据转化成multipart类型的数据
MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
Iterator iter = multiRequest.getFileNames();
while(iter.hasNext()){
MultipartFile file = multiRequest.getFile((String)iter.next());
if(file != null){
String originalFileName = file.getOriginalFilename(); String path =request.getSession().getServletContext().getRealPath(storePath);
//得到存储到本地的文件名
String localFileName=UUID.randomUUID().toString()+getFileSuffix(originalFileName);
//新建本地文件
File localFile = new File(path,localFileName);
            //创建目录
File fileDir=new File(path);
                    if (!fileDir.isDirectory()) {
                        // 如果目录不存在,则创建目录
                        fileDir.mkdirs();
                    } String src=storePath+"/"+localFileName;
//写文件到本地
try {
file.transferTo(localFile);
return src;
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
return null;
}
/**
* 获取文件后缀
* @param originalFileName
* @return
*/
public static String getFileSuffix(String originalFileName){
int dot=originalFileName.lastIndexOf('.');
if((dot>-1)&&(dot<originalFileName.length())){
return originalFileName.substring(dot);
}
return originalFileName;
}
}

二:controller 调用

@Controller
@RequestMapping("/file")
public class FileUploadController { @RequestMapping("save")
@ResponseBody
public String save(String name,String password,HttpServletRequest request,HttpServletResponse response){
System.out.println("name-----------------------"+name);
System.out.println("password-----------------------"+password);return FileUploadUtils.tranferFile(request, "/upload");
}
}

三:jsp页面代码

<h2>文件上传</h2>
<form name="upload" action="/file/save" enctype="multipart/form-data" method="post">
  姓名:<input name="name" type="text">
  密码:<input name="password" type="text">
  文件:<input type="file" name="thefile" />
  <input type="submit" value="上传文件" />
</form>

四:springmvc配置文件中, 配置文件上传视图支持

<!-- 支持上传文件 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="UTF-8"></property>
<property name="maxUploadSize" value="20000000"></property>
</bean>

至此,一个完整的springmvc文件上传工具完毕。

spring mvc 文件上传工具类的更多相关文章

  1. spring boot 文件上传工具类(bug 已修改)

    以前的文件上传都是之前前辈写的,现在自己来写一个,大家可以看看,有什么问题可以在评论中提出来. 写的这个文件上传是在spring boot 2.0中测试的,测试了,可以正常上传,下面贴代码 第一步:引 ...

  2. Spring MVC 笔记 —— Spring MVC 文件上传

    文件上传 配置MultipartResolver <bean id="multipartResolver" class="org.springframework.w ...

  3. 【Java Web开发学习】Spring MVC文件上传

    [Java Web开发学习]Spring MVC文件上传 转载:https://www.cnblogs.com/yangchongxing/p/9290489.html 文件上传有两种实现方式,都比较 ...

  4. 文件上传工具类 UploadUtil.java

    package com.util; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import ja ...

  5. FastDFS 文件上传工具类

    FastDFS文件上传工具类 import org.csource.common.NameValuePair; import org.csource.fastdfs.ClientGlobal; imp ...

  6. Spring MVC文件上传教程 commons-io/commons-uploadfile

    Spring MVC文件上传教程 commons-io/commons-uploadfile 用到的依赖jar包: commons-fileupload 1.3.1 commons-io 2.4 基于 ...

  7. Spring mvc文件上传实现

    Spring mvc文件上传实现 jsp页面客户端表单编写 三个要素: 1.表单项type="file" 2.表单的提交方式:post 3.表单的enctype属性是多部分表单形式 ...

  8. Spring mvc 文件上传到文件夹(转载+心得)

    spring mvc(注解)上传文件的简单例子,这有几个需要注意的地方1.form的enctype=”multipart/form-data” 这个是上传文件必须的2.applicationConte ...

  9. spring mvc 文件上传 ajax 异步上传

    异常代码: 1.the request doesn't contain a multipart/form-data or multipart/mixed stream, content type he ...

随机推荐

  1. xcode 更新svn/Git后发现模拟器显示No Scheme问题

    这个是由于XXX..xcodeproj包中xcuserdata文件夹中user.xcuserdatad文件夹名字的问题...user.xcuserdatad文件夹的名字,不是当前用户的名字,就会显示n ...

  2. jdk与eclipse位数不一致出现的问题

    今天运行eclipse时出现了如下问题: 后来去网上查了一下,如果jdk版本的位数和eclipse安装版本所需要的版本位数不相同,就会出现如图所示的问题,导致eclipse打不开. 1.查询jdk版本 ...

  3. listView 解决焦点冲突问题 item项和子控件之间的冲突

    listView 在item布局的顶级布局中设置 android:descendantFocusability="blocksDescendants"可以阻止子控件获取焦点 这样使 ...

  4. overflow 在float浮动标签里的作用

    overflow可以使浮动元素回归文档流,但是浮动元素却仍然具有浮动的属性 <!DOCTYPE html> <html lang="en"> <hea ...

  5. H5C3动画

    1 渐变 /* 渐变:不同颜色之间的柔和过渡 线性渐变:沿着某条直线发生渐变效果 注意:渐变准备来说是一张背景图 语法:linear-gradient */ background-image: lin ...

  6. 全局组建封装(挂载到vue实例的原型中,通过this访问)

    主题:组建的封装  一:install注册的全局封装(v-grid九宫格组建)               1.九宫格的封装主要有三个api 点击功能 每行个数 是否隐藏边框              ...

  7. [Robot Framework] 学习资料

    https://www.cnblogs.com/pachongshangdexuebi/category/981644.html Robot Framework学习笔记(一)------环境搭建 Ro ...

  8. [AI]神经网络章2 神经网络中反向传播与梯度下降的基本概念

    反向传播和梯度下降这两个词,第一眼看上去似懂非懂,不明觉厉.这两个概念是整个神经网络中的重要组成部分,是和误差函数/损失函数的概念分不开的. 神经网络训练的最基本的思想就是:先“蒙”一个结果,我们叫预 ...

  9. 手机(Android)资源

    手机型号 API Android版本   Lenovo A238t API 10 2.3.5   华为 P7 API 19 4.4.2                  

  10. MMS从Contacts中添加收件人显示email账号

    android系统默认代码,MMS中可以添加email地址作为收件人,但是从Contacts中选择收件人时却不显示email. 解决思路:为了降低修改量,在原来只搜索phoneNum的基础上,再做一次 ...