进口FileUpload和common-io的Jar包

注意:1、Struts2其它方法需要使用的:struts2过滤,将改变reqeust类型,由HttpServletRequest成为MultiPartRequestWrapper

1、Test.jsp:

<form action="<%=basePath%>self/testFileUpload.do" method="post" enctype="multipart/form-data">
<input type="text" name="num">
<input name="img1" type="file" accept="image/gif,image/jpg,image/png,image/jpeg"/>
<input name="img2" type="file" accept="image/gif,image/jpg,image/png,image/jpeg"/>
<input type="submit" name="test">
<input type="reset" name="test1">
</form>

2、controller:

@RequestMapping(value="/testFileUpload")
public void testFileUpload(HttpServletRequest request,HttpServletResponse response) throws Exception{
String num = "";
String img1 = "";
String img2 = "";
String fileName = "";
try {
String t = request.getCharacterEncoding();
boolean isMultipart = ServletFileUpload.isMultipartContent(request);//推断是否是表单文件类型
if(isMultipart){
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setHeaderEncoding(request.getCharacterEncoding());//这里非常重要啊 解决linux环境下上传文件名称乱码的问题
//upload.setFileSizeMax(3*1024*1024);//3M
List items = upload.parseRequest(request);
if(items.size() == 0){
System.out.println("无数据");
}
Iterator<Object> formItem = items.iterator();
while(formItem.hasNext()){
FileItem item = (FileItem) formItem.next();
//假设是表单元素
if(item.isFormField()){
if (item.getFieldName().equals("num")) {
num = item.getString(request.getCharacterEncoding()).trim();
}
}
//假设不是表单元素
if(!item.isFormField()){
String name = item.getName();
String type = item.getContentType();
long sizeInBytes = item.getSize(); try {
String fullName = item.getName().trim();
if(fullName != ""){
fileName = System.currentTimeMillis() + fullName.substring(fullName.indexOf("."));
if(item.getFieldName().equals("img1")){
fileName = "img1-" + System.currentTimeMillis() + fullName.substring(fullName.indexOf("."));
}
if(item.getFieldName().equals("img2")){
fileName = "img2-" + System.currentTimeMillis() + fullName.substring(fullName.indexOf("."));
}
String tomcatRoot = FileOperator.getRootPath();
String path = tomcatRoot;
if(FileOperator.FileUploadEx(path, fileName, item.getSize(), item.getInputStream())){
if(item.getFieldName().equals("img1")){
System.out.println("testimg1");
}
if(item.getFieldName().equals("img2")){
System.out.println("testimg2");
}
}
} } catch (Exception e) {
e.printStackTrace();
}
}
}
}else{
System.out.println("非multipart/form-data提交方式");
} } catch (Exception e) {
e.printStackTrace();
}
}

版权声明:本文博客原创文章,博客,未经同意,不得转载。

SpringMVC使用FileUpload上传文件的更多相关文章

  1. springMVC+jsp+ajax上传文件

    工作中遇到的小问题,做个笔记 实现springMVC + jsp + ajax 上传文件 HTML <body> <form id="myform" method ...

  2. FileUpload 上传文件,并实现c#使用Renci.SshNet.dll实现SFTP文件传输

    fileupload上传文件和jquery的uplodify控件使用方法类似,对服务器控件不是很熟悉,记录一下. 主要是记录新接触的sftp文件上传.服务器环境下使用freesshd搭建好环境后,wi ...

  3. springMvc 使用ajax上传文件,返回获取的文件数据 附Struts2文件上传

    总结一下 springMvc使用ajax文件上传 首先说明一下,以下代码所解决的问题 :前端通过input file 标签获取文件,通过ajax与后端交互,后端获取文件,读取excel文件内容,返回e ...

  4. ASP.NET使用FileUpload上传文件

    前台代码: <asp:FileUpload ID="fuKeleyi" runat="server" /> <asp:Button ID=&q ...

  5. 解决COS、FileUpload上传文件时中文文件名乱码问题

    方法: MultipartParser mp = new MultipartParser(request, 10*1024*1024); mp.setEncoding("GBK") ...

  6. JSP/Serlet 使用fileupload上传文件

    需要引用的jar commons-fileupload-1.3.1.jar commons-io-2.2.jar index.jsp <body> <center> <h ...

  7. SpringMVC使用CommonsMultipartResolver上传文件

    DispatcherServlet并没有实现任何解析multipart请求数据的功能,它将该任务委托给了Spring中MultipartResolver策略接口的实现,通过该接口的实现类来解析mult ...

  8. SpringMVC使用StandardServletMultipartResolver上传文件

    DispatcherServlet并没有实现任何解析multipart请求数据的功能,它将该任务委托给了Spring中MultipartResolver策略接口的实现,通过该接口的实现类来解析mult ...

  9. .NET FileUpLoad上传文件

    一.上传扫描件到服务器,自定义创建文件夹(如果存在该文件夹,则无需创建),并判断格式以及文件大小进行保存: 首先创建一个保存按钮事件: protected void btnSave_Click(obj ...

随机推荐

  1. [网络]_[0基础]_[使用putty备份远程数据]

    场景: 1. putty是windows上訪问linux服务的免费client之中的一个.用它来ssh到远程server备份数据是常见的做法(在没做好自己主动备份机制前), 通过putty界面尽管也不 ...

  2. C,C++中的static

    在C和C++中,static都有两种基本的含义,并且这两种含义经常是互相有冲突的: 1) 在固定的地址上分配,也就是说对象是在一个特殊的静态数据区上创建的,而不是每次 函数调用时在堆栈上产生的.这也是 ...

  3. state pattern

    6 状态模式总结 状态模式将一个对象在不同状态下的不同行为封装在一个个状态类中,通过设置不同的状态对象可以让环境对象拥有不同的行为,而状态转换的细节对于客户端而言是透明的,方便了客户端的使用.在实际开 ...

  4. WPF 绑定

    WPF里分三种Binding:Binding, PriorityBinding, MultiBinding,这三种Binding的基类都是BindingBase,而BindingBase又继承于Mar ...

  5. String和StringBuffer 常用方法总结

     String和StringBuffer 常用方法总结 一.不可变长度String 1.字符串---->char数组 char[] chars=str.toCharArray(); 2.字符串中 ...

  6. flashfxp3.41中文版注册码:(适合最新版本)

    推荐(尚未被封的 Realkey) FLASHFXPvACq2ssbvAAAAAC1W7cJKQTzmx77zmqJICvA7d3WnU tWNXdrp8YuERRFdIvXfOPbcpABkVix2 ...

  7. [Cocos2d-x]在Cocos2d-x 3.x如何通过版本号WebSocket连接server数据的传输

    WebSocket 首先新建一个空的目录,通过npm安装nodejs-websocket: npm install nodejs-websocket 新建app.js文件: var ws = requ ...

  8. CFormView动态调整对话框的尺寸和调整比例控制的部署

    基于单个文件CFormView动态调整对话框的尺寸和调整比例控制的部署 假设你正在开发一个程序基于单个文件,使用CFormView基类来实现多种形式展示,那么,这个文件可能会给你一点帮助. 一.实现对 ...

  9. 创建您自己的Maven模板

    相关链接: http://maven.apache.org/archetype/maven-archetype-plugin/ 一.事实上Maven的模板也是一个maven项目,所以我们首先要生成一个 ...

  10. ACM-DP最大连续子——hdu1231

    ***************************************转载请注明出处:http://blog.csdn.net/lttree************************** ...