form表单提交文件和Ajax提交文件
传统form表单设置enctype为multipart/form-data以二进制流的形式向后台传
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="/proces/UploadServlet2" method="post" enctype="multipart/form-data">
<input type="file" name="imgFileName"><br/>
<input type="submit"/>
</form>
</body>
</html>
ajax方式
$(document).on("click",".addBtn2",function(){
var data = new FormData($(".infoForm")[0]);
$.ajax({
url:"/proces/UploadServlet2",
async:true,
type:"post",
data:data,
contentType:false,
processData: false,
success:function(data){
console.log(data);
if(data==1){
layer.msg('添加成功');
layer.close(index);
init();
}
},
error:function(){
layer.alert('您添加失败了');
layer.close(index);
init();
}
})
})
``
后台
```javascript
```java
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=UTF-8");
resp.setCharacterEncoding("utf-8");
String imgFileName = "";
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload fileUpload = new ServletFileUpload(factory);
if(!ServletFileUpload.isMultipartContent(req)) {
System.out.println("表单的enctype属性不是multipart/form-data类型");
return;
}
String select = null;
String newsTitle2="";
String time="";
String textarea="";
fileUpload.setFileSizeMax(8*1024*1024);
fileUpload.setSizeMax(60*1024*1024);
try {
List<FileItem> parseRequest = fileUpload.parseRequest(req);
for (FileItem fileItem : parseRequest) {
if(!fileItem.isFormField()) {
String fileName = fileItem.getName();
InputStream fileStream = fileItem.getInputStream();
String parentDir = this.getServletContext().getRealPath("/upload");
String realFileName = UUID.randomUUID().toString()+"-"+fileName;
File file = new File(parentDir,realFileName);
if(!file.getParentFile().exists()) {
file.getParentFile().mkdirs();
}
OutputStream out = new FileOutputStream(file);
byte[] buffer = new byte[1024];
int len = -1;
while((len = fileStream.read(buffer))!=-1) {
out.write(buffer,0, len);
}
System.out.println(parentDir);
System.out.println(realFileName);
imgFileName = realFileName;
out.flush();
out.close();
fileStream.close();
}else {
String fieldName = fileItem.getFieldName();
String fieldValue = fileItem.getString("UTF-8");
if(fieldName.equals("select")) {
select=fieldValue;
}
if(fieldName.equals("newsTitle2")) {
newsTitle2=fieldValue;
}
if(fieldName.equals("time")) {
time=fieldValue;
}
if(fieldName.equals("textarea")) {
textarea=fieldValue;
}
System.out.println("select"+select);
System.out.println(fieldName+":"+fieldValue);
}
}
} catch (FileUploadException e) {
e.printStackTrace();
}