Servlet文件上传要点:

1、设置注解:@MultipartConfig

2、表单提交方式:post

3、设置表单提交编码格式:enctype="multipart/form-data"

4、代码如下:


package com.tiger.fileload;

import java.io.*;
import javax.servlet.ServletException;
import javax.servlet.annotation.*;
import javax.servlet.http.*;
/**
* 单文件上传
* 1、设置注解:@MultipartConfig
* 2、表单提交方式:post
* 3、设置表单提交编码格式:enctype="multipart/form-data"
* @author tiger
* @time 2017年9月1日
*/
@WebServlet("/fileloadone")
@MultipartConfig
public class FileupOne extends HttpServlet {
private static final long serialVersionUID = 1L;

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取文件对象:filename前端表单提交获取。
Part part = request.getPart("filename");
//获取上传文件名
String fileName = getFileName(part);
//获取上传文件夹
String uploadFolder = getUploadFolder(request, "tigerUploadOne");

// part.write(uploadFolder+fileName);

//获取文件输入流
InputStream is = part.getInputStream();
//获取文件输出流
OutputStream os = new FileOutputStream( new File(uploadFolder+fileName));
System.out.println("one:"+uploadFolder+fileName);
//上传文件
uploadFile(is, os);
//关闭传输流
os.flush();
os.close();
}
/**
* 上传文件方法
* @param is
* @param os
*/
private void uploadFile(InputStream is,OutputStream os) {
//缓存大小,一次读取1024个字节
byte[] buff = new byte[1024];
int len = 0;
try {
while ((len = is.read(buff)) != -1) {
os.write(buff, 0, len);
}
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 获取上传文件名
* @param part
* @return
*/
private String getFileName(Part part) {
String header=part.getHeader("Content-Disposition");
String fileName=header.substring(header.indexOf("filename=\"")+10, header.lastIndexOf("\""));
return fileName;
}
/**
* 获取文件上传路径
* @param request HttpServletRequest请求对象
* @param upload 文件上传的文件夹
* @return
*/
private String getUploadFolder(HttpServletRequest request,String upload) {
//获取上传文件的路径名:upload为自己设置
String uploadFolder = request.getServletContext().getRealPath(File.separator+upload) + File.separator;
//以上一步获取的文件路径名创建上传文件夹
File file = new File(uploadFolder);
//如果文件夹不存在,则创建
if (!file.exists()) {
file.mkdirs();
}
return uploadFolder;
}
}
package com.tiger.fileload;

import java.io.*;
import java.util.Collection;
import javax.servlet.ServletException;
import javax.servlet.annotation.*;
import javax.servlet.http.*;
/**
* 多文件上传
* 1、设置注解:@MultipartConfig
* 2、表单提交方式:post
* 3、设置表单提交编码格式:enctype="multipart/form-data"
* @author tiger
* @time 2017年9月1日
*/
@WebServlet("/fileloadmore")
@MultipartConfig
public class FileupMore extends HttpServlet {
private static final long serialVersionUID = 1L;

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取文件对象List:filename前端表单提交获取。
Collection

partList = request.getParts();
for (Part part : partList) {
if(part.getName().equals("filename")) {
//获取上传文件名
String fileName = getFileName(part);
//获取上传文件夹
String uploadFolder = getUploadFolder(request, "tigerUploadMore");
//将文件写入服务器
part.write(uploadFolder+fileName);
System.out.println("more:"+uploadFolder+fileName);
}
}
}
/**
* 获取上传文件名
* @param part
* @return
*/
private String getFileName(Part part) {
String header=part.getHeader("Content-Disposition");
String fileName=header.substring(header.indexOf("filename=\"")+10, header.lastIndexOf("\""));
return fileName;
}
/**
* 获取文件上传路径
* @param request HttpServletRequest请求对象
* @param upload 文件上传的文件夹
* @return
*/
private String getUploadFolder(HttpServletRequest request,String upload) {
//获取上传文件的路径名:upload为自己设置
String uploadFolder = request.getServletContext().getRealPath(File.separator+upload) + File.separator;
//以上一步获取的文件路径名创建上传文件夹
File file = new File(uploadFolder);
//如果文件夹不存在,则创建
if (!file.exists()) {
file.mkdirs();
}
return uploadFolder;
}
}





---fileload-one---


文件上传2:



文件上传3:









---fileload-more---


文件上传2:



文件上传3: