一、Jakart:Jakart文件上传:(推荐使用)
import java.io.File;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
@SuppressWarnings("serial")
public class JakartFileUp extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
@SuppressWarnings("unchecked")
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 设置工厂
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(1024 * 64); // 缓存在内存中的数据量
ServletFileUpload sup = new ServletFileUpload(factory);
sup.setFileSizeMax(1024 * 1024 * 50); // 设置单个上传的最大文件
sup.setSizeMax(1024 * 1024 * 100); // 允许一次上传的文件总大小
try {
List<FileItem> files = sup.parseRequest(request);
if (files == null || files.size() == 0) {
System.out.println("没有上传文件!");
} else {
for (FileItem myFile : files) {
if(myFile.isFormField()){//普通表单字段
String name = myFile.getFieldName();
String value = myFile.getString();
System.out.println(name+" : "+value);
}else{ //文件字段
String name = myFile.getName();
int start = name.lastIndexOf("\\");
//文件名
name = name.substring(start+1);
System.out.println("文件名:"+name);
//路径
String base = this.getServletContext().getRealPath("/");
System.out.println("base:"+base);
String dest = base+"/imgs/jakart/"+name;
File destFile = new File(dest);
try {
myFile.write(destFile);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
} catch (FileUploadException e) {
e.printStackTrace();
}
}
}
二、SmartUpload:Smart上传方式
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.lxh.smart.File;
import org.lxh.smart.SmartUpload;
import org.lxh.smart.SmartUploadException;
public class UpFile extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request,response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
SmartUpload smart = new SmartUpload();
smart.setMaxFileSize(1024*1024);
//初始化上传对象
smart.initialize(this.getServletConfig(),request,response);
try {
//上传文件
smart.upload();
int fileCount = smart.getFiles().getCount();
//循环取得所有的文件对象
for(int i = 0; i < fileCount;i++){
File file = smart.getFiles().getFile(i);
if(!file.isMissing()){
//取得上传文件名
String fileName = file.getFileName();
//取得后缀名
String ext = file.getFileExt();
//取得文件大小
long size = file.getSize();
System.out.println("上传文件名:"+fileName);
//取得工程要目录
String base = this.getServletContext().getRealPath("/");
//保存目录
String dest = base+"/imgs/smart/"+fileName;
//保存文件
file.saveAs(dest);
System.out.println("文件上传成功!");
}
}
String name = smart.getRequest().getParameter("author");
System.out.println("上传者:"+name);
} catch (SmartUploadException e) {
e.printStackTrace();
}
}
}