使用Servlet3.0和XMLHttpRequest Level 2处理文件上传
来源:互联网 发布:唐筛检查结果数据分析 编辑:程序博客网 时间:2024/05/29 18:08
今天在做作业时遇到了一个问题,场景如下:
不使用框架,不使用开源jar包,单纯使用Servlet进行文件上传操作,前台使用ajax提交的方式提交表单,表单中有文件字段。
经过思考和查证资料,整理如下:
具体的FormData的介绍:https://developer.mozilla.org/zh-CN/docs/Web/API/FormData
这里涉及到AJAX操作的一个重要的对象XMLHttpRequest,它有两个版本:XMLHttpRequest Level 1和XMLHttpRequest Level 2
XMLHttpRequest Level 1:
只支持文本数据的传输,不支持二进制文件文件的上传和读取。
没有进度提示,只能提示是否完成。
只能向同一域名的服务器发送请求。
XMLHttpRequest Level 2:
W3C组织在2008年时起草了XMLHttpRequest Level 2,它克服了前代的缺陷。
前台页面
<form method="post" action=""><input type="file" name="head"/><input type="text" name="stuid"/><input type="text" name="address"/></form>
$("form").bind("submit",function(){ var params = new FormData($(this)[0]); var xhr = new XMLHttpRequest(); xhr.open("post","student",true); xhr.onreadystatechange=function(){ if(xhr.readyState==4&&xhr.status==200){ var result = eval('('+xhr.responseText+')'); } } xhr.send(params); return false; });
后台
@WebServlet("/student")@MultipartConfig //必须带的注解public class StudentServlet extends HttpServlet {private static final long serialVersionUID = 1L;/** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String stuid = request.getParameter("stuid");String address = request.getParameter("address");Part part = request.getPart("head");//获取表单传递的fileString []str = part.getSubmittedFileName().split("\\.");//拆分,得到后缀String path = this.getServletContext().getRealPath("/upload");String fileName = "/"+new Date().getTime()+"."+str[str.length-1];part.write(path+fileName);//写到指定目录的文件中}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request,response);}}
0 0
- 使用Servlet3.0和XMLHttpRequest Level 2处理文件上传
- servlet3.0处理文件上传
- 使用Servlet3.0上传文件
- servlet3.0上传文件
- servlet3.0文件上传
- Servlet3.0文件上传
- servlet3.0 文件上传
- 利用XMLHttpRequest level 2 实现文件异步上传
- Servlet3.0的文件上传
- Servlet3.0现实文件上传
- servlet3.0多文件上传
- Servlet3.0 上传文件实例
- 【Demo】Servlet3.0 上传文件
- servlet3.0 part上传文件
- 使用Servlet3.0提供的API实现文件上传
- 在Servlet3.0中使用request.getParts()获取上传文件
- Servlet3.0自带的文件上传功能使用范例
- JavaWeb之使用Servlet3.0实现文件上传案例
- Java,方法的重写和重载
- MP4文件格式解析
- CALayer绘制图层
- 新手入门,和风天气预报免费API接口用GSON工具实现数据解析
- NYOJ 488 素数环
- 使用Servlet3.0和XMLHttpRequest Level 2处理文件上传
- java 内部类
- php面向对象之接口教程
- myBatis Mapper接口注入null指针
- [leetcode]1. Two Sum
- 正则表达式
- HTML/CSS/JavaScript
- mysql安装配置
- 从反编译认识内部类