java 异步上传文件
2016-05-17 23:15
316 查看
我们的java上传文件,需要form同步上传,并且需要设置enctype为multipart/form-data。
如果将form使用ajax异步提交的话,将会报错说enctype不是multipart/form-data类型
但有时候确实又有酱紫的需求,可以实现,需要借助jquery.form.js 插件
插件下载地址为:
http://yun.baidu.com/share/link?shareid=1698628055&uk=2836507213
下面贴出关键性代码
jsp代码为:
后台代码不变,和普通form上传代码一样
亲测有用
如果将form使用ajax异步提交的话,将会报错说enctype不是multipart/form-data类型
但有时候确实又有酱紫的需求,可以实现,需要借助jquery.form.js 插件
插件下载地址为:
http://yun.baidu.com/share/link?shareid=1698628055&uk=2836507213
下面贴出关键性代码
jsp代码为:
<form id= "uploadForm"> <p >指定文件名: <input type="text" name="filename" value= ""/></p > <p >上传文件: <input type="file" name="file"/></p> <input type="button" value="上传" onclick="doUpload()" /> </form> <script> function doUpload(){ var formData = new FormData($( "#uploadForm" )[0]); $.ajax({ url: '${pageContext.request.contextPath}/UploadHandleServlet' , type: 'POST', data: formData, async: false, cache: false, contentType: false, processData: false, success: function (returndata) { alert(returndata); }, error: function (returndata) { alert(returndata); } }); } </script>
后台代码不变,和普通form上传代码一样
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyyMMddHHmmss"); String savePath =request.getSession().getServletContext().getRealPath("/WEB-INF/upload"); File file = new File(savePath); if (!file.exists()) { file.mkdir(); } String message =""; try{ DiskFileItemFactory factory = new DiskFileItemFactory(); factory.setSizeThreshold(1024*100); factory.setRepository(file); ServletFileUpload upload = new ServletFileUpload(factory); upload.setHeaderEncoding("UTF-8"); List<FileItem> list = upload.parseRequest(request); //正则匹配,过滤路径取文件名 String regExp = ".+\\\\(.+)$"; Pattern p = Pattern.compile(regExp); String fileName=""; for(FileItem item : list){ if(item.isFormField()){ String name = item.getFieldName(); String value = item.getString("UTF-8"); System.out.println(name + "=" + value); }else{ String name = item.getName(); name = name.substring(name.lastIndexOf("\\")+1); fileName = savePath+"/"+ sdf1.format(new Date()) + "_"+name; item.write(new File(fileName)); } } message = "文件上传成功!"; }catch (Exception e) { message= "文件上传失败!"; e.printStackTrace(); }
亲测有用
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树