HTML5 FormData提交表单-HTML5文件上传-JavaServlet处理文件上传
2017-01-11 00:49
507 查看
记录一下,供大家参考供自己备用,
原生开发爱好,框架什么的都是浮云!
index.html : 测试环境 google chrome
Myservlet.java:测试环境 Tomcat8
原生开发爱好,框架什么的都是浮云!
index.html : 测试环境 google chrome
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>标题</title> </head> <body> <input type = 'text' id="normal_stream" value="中文乱码不?" /> <input type = 'file' id="binary_stream" accept = "image/jpg" multiple="multiple" /> <input type = 'button' value="SUBMIT" onclick="save()" /> <div id="show"></div> <script> //console.log(JSON.parse('{"a":"123"}')); function save(){ var normal_stream = document.getElementById("normal_stream").value; var files = document.getElementById("binary_stream").files; var arg={ url : 'test.action', data:{normalStream:normal_stream}, progress:function(e){ //展示进度条 e.loaded/e.total; console.log(e.loaded/e.total); }, fail:function(e){ //失败处理 console.log("fail:"+e); }, success:function(json){ //成功处理 console.log(json); document.getElementById("show").innerHTML=json.normal+"本地文件名: "+json.fileName; } }; for(var i=0;i<files.length;i++) arg.data["file-"+i] = files[i]; upload(arg); } function upload(arg){ var form = new FormData(); for(var key in arg.data) form.append(key+"",arg.data[key]); xhr = new XMLHttpRequest(); xhr.open("POST", arg.url, true); xhr.upload.onprogress = arg.progress; xhr.onreadystatechange=function(){ if(xhr.readyState==4){ if(xhr.status>=200&&xhr.status<300){ //console.log(xhr.responseText); arg.success&&arg.success(JSON.parse(xhr.responseText)); }else arg.fail&&arg.fail(xhr.status); } } xhr.send(form); } </script> </body> </html>
Myservlet.java:测试环境 Tomcat8
package com.test; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.Collection; import javax.servlet.ServletException; import javax.servlet.annotation.MultipartConfig; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.Part; @WebServlet("/test.action") @MultipartConfig public class MyServlet extends HttpServlet { private static final long serialVersionUID = 1L; public MyServlet() { super(); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/plain;charset=utf-8"); String normalStream = new String (request.getParameter("normalStream").getBytes("ISO8859-1"),"UTF-8"); //二进制流上传需要转码 normalStream = org.apache.commons.lang.StringEscapeUtils.escapeHtml(normalStream);//字符实体化 依赖commons-lang-2.6.jar String echoFileName=""; File file=null; String path = getServletContext().getRealPath(".")+File.separator+"upload"+File.separator;//获取网络路径 file = new File(path); if(!file.exists())file.mkdirs(); Collection<Part> parts = request.getParts(); //谨防多文件上传 System.out.println(parts.size()); String fileName; InputStream fin = null; OutputStream fout = null; for(Part p : parts){ fileName = p.getSubmittedFileName();//获取客户端文件名 , 就用这个文件名 if(null == fileName)continue; echoFileName+=(echoFileName.isEmpty()?fileName:","+fileName); fin = p.getInputStream(); file = new File(path+fileName); if(!file.exists())file.createNewFile(); fout = new FileOutputStream(file); int x; while((x = fin.read())!=-1) fout.write(x); fout.flush(); fin.close();fout.close(); } response.getWriter().append("{\"normal\":\""+normalStream+"\",\"fileName\":\""+echoFileName+"\"}"); response.getWriter().flush(); } }
相关文章推荐
- 上传文件 使用HTML5的FormData 提交表单和文件数据
- ajax 学习 无刷新提交表单数据(含文件上传),用formdata
- PHP Ajax,FormData收集表单数据(包括文件) 页面无刷新上传文件(提交表单)
- jsp表单提交上传文件处理
- html5里使用ajax提交含有上传文件的form表单
- Form表单多文件改名ajax提交上传及java后台处理
- 在JSP表单提交中怎样在Servlet中处理文件上传并且获取JSP页面传过来的一些参数
- 文件上传(jspsmart实现)file和text表单同时提交的问题
- 无刷新文件上传 ajax提交表单
- 话题:jQuery 关于文件上传表单处理的一个非常怪异的问题
- 模拟提交有文件上传的表单(通过http模拟上传文件)
- ajax方式提交带文件上传的表单
- Java web中,当表单含有文件上传时,提交数据的如何读取
- php中关于普通表单多文件上传的处理方法
- 模拟提交有文件上传的表单(通过http模拟上传文件)
- 简单解决 multipart/form-data 文件上传表单中 传递参数无法获取的办法! (解决办法:动态更改表单提交URL)
- android 文件上传(模拟表单提交)
- libcurl提交表单上传文件
- 模拟提交有文件上传的表单(通过http模拟上传文件)
- 无刷新文件上传 ajax提交表单