要求:

1、表单的method属性设置为post

2、enctype="multipart/form-data"   //表单必须设置该属性二进制

servlet实现文件上传

1、使用注解@MultipartConfig将Servlet标识为支持文件上传

2、Servlet3.0将multipart/form-data的POST请求封装成Part,通过Part对上传的文件进行操作。

3、实现代码:

(1)单文件上传:
  

Part part = request.getPart("file");
part.write(savePath+File.separator+fileName);

(2)多文件:

Collection<Part> parts = request.getParts();

  

ajax文件上传

1、ajax设置processData和contentType属性

processData: false//参数序列化
contentType: false //fasle二进制

2、传递的data参数:

new FormData($("#form1")[0])

 总结:

$.ajax({
  url: "../TestServlet01",
  data: new FormData($("#form1")[0]),
  type: "post",
  //cache: false,//上传文件无需缓存
   processData: false,//用于对data参数进行序列化处理 这里必须false
  contentType: false, //必须
  success: function (result) {
    alert("上传完成!");
  }
})