SpringMVC使用FileUpload上传文件
进口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上传文件的更多相关文章
- springMVC+jsp+ajax上传文件
工作中遇到的小问题,做个笔记 实现springMVC + jsp + ajax 上传文件 HTML <body> <form id="myform" method ...
- FileUpload 上传文件,并实现c#使用Renci.SshNet.dll实现SFTP文件传输
fileupload上传文件和jquery的uplodify控件使用方法类似,对服务器控件不是很熟悉,记录一下. 主要是记录新接触的sftp文件上传.服务器环境下使用freesshd搭建好环境后,wi ...
- springMvc 使用ajax上传文件,返回获取的文件数据 附Struts2文件上传
总结一下 springMvc使用ajax文件上传 首先说明一下,以下代码所解决的问题 :前端通过input file 标签获取文件,通过ajax与后端交互,后端获取文件,读取excel文件内容,返回e ...
- ASP.NET使用FileUpload上传文件
前台代码: <asp:FileUpload ID="fuKeleyi" runat="server" /> <asp:Button ID=&q ...
- 解决COS、FileUpload上传文件时中文文件名乱码问题
方法: MultipartParser mp = new MultipartParser(request, 10*1024*1024); mp.setEncoding("GBK") ...
- JSP/Serlet 使用fileupload上传文件
需要引用的jar commons-fileupload-1.3.1.jar commons-io-2.2.jar index.jsp <body> <center> <h ...
- SpringMVC使用CommonsMultipartResolver上传文件
DispatcherServlet并没有实现任何解析multipart请求数据的功能,它将该任务委托给了Spring中MultipartResolver策略接口的实现,通过该接口的实现类来解析mult ...
- SpringMVC使用StandardServletMultipartResolver上传文件
DispatcherServlet并没有实现任何解析multipart请求数据的功能,它将该任务委托给了Spring中MultipartResolver策略接口的实现,通过该接口的实现类来解析mult ...
- .NET FileUpLoad上传文件
一.上传扫描件到服务器,自定义创建文件夹(如果存在该文件夹,则无需创建),并判断格式以及文件大小进行保存: 首先创建一个保存按钮事件: protected void btnSave_Click(obj ...
随机推荐
- android 编译调用C代码
博客地址:www.zalezone.cn 前言 需求来源 这几天帮别人做一个简单的androidclient,也没什么功能,主要就是调用C代码来对手机的Wifi网络进行设置.于是也就引出了技术难点所在 ...
- Sliverlight之 特效
1,OpacityMask控件的部分渐隐(见Project16) (1) 控件的OpacityMask有什么作用 说明:设置所选区域不透明度的画笔,一般结合LinearGradientBrush或Ra ...
- 利用HttpOnly来防御xss攻击
xss的概念就不用多说了,它的危害是极大的,这就意味着一旦你的站点出现xss漏洞,就能够运行随意的js代码,最可怕的是攻击者利用js获取cookie或者session劫持,假设这里面包括了大量敏感信息 ...
- 安装gcc 3.4
安装 gcc 3.4 f**k,不是为了编译0.11内核.我才懒得鸟3.4的版本号 源代码编译被我实践--"不归路",各种报错,我起码不止是了4个版本号的gcc,各种不兼容.各 ...
- Source Insight 3.X 插件支持utf8,完美解决中国乱码,连接到美丽的轮廓
上次SI多标签插件之后,由于公司内部编码改为utf8编码,因此特意做了这个Source Insight 3.X utf8插件. 下载地址:http://pan.baidu.com/s/1mgyZous ...
- Redis 的性能
Redis 的性能幻想与残酷现实 2011 年,当初选择 Redis 作为主要的内存数据存储,主要吸引我的是它提供多样的基础数据结构可以很方便的实现业务需求.另一方面又比较担心它的性能是否足以支撑,毕 ...
- C# HttpClient Cookie验证解决方法
自实现的cookie 验证,远程取值的例子 以下代码配合HttpClient使用可以实现跨域(cookie的读写) //验证 复制代码 代码如下: HttpClient httpClient = ne ...
- Python学习笔记12:标准库之对象序列化(pickle包,cPickle包)
计算机的内存中存储的是二进制的序列. 我们能够直接将某个对象所相应位置的数据抓取下来,转换成文本流 (这个过程叫做serialize),然后将文本流存入到文件里. 因为Python在创建对象时,要參考 ...
- 【C++基金会 06】explictkeyword
C++提供keywordexplicit,你应该不能阻止的转换构造隐式转换发生的同意.声明explicit的构造不能在一个隐式转换使用. 1.演示样例 我们先来看一段演示样例代码: class A { ...
- Codeforces 459E Pashmak and Graph(dp+贪婪)
题目链接:Codeforces 459E Pashmak and Graph 题目大意:给定一张有向图,每条边有它的权值,要求选定一条路线,保证所经过的边权值严格递增,输出最长路径. 解题思路:将边依 ...