之前自己写小项目的时候也碰到过文件上传的问题,没有找到很好的解决方案。虽然之前网找各种解决方案的时候也看到过WebUploader,但没有进一步深究。这次稍微深入了解了些,这里也做个小结。
简单的文件和普通数据上传并保存
JSP页面:
Insert title here文件:信息:
servlet:
packagecom.yihengliu.web.action;importjava.io.File;importjava.io.IOException;importjava.io.InputStream;importjava.util.List;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importorg.apache.commons.fileupload.FileItem;importorg.apache.commons.fileupload.disk.DiskFileItemFactory;importorg.apache.commons.fileupload.servlet.ServletFileUpload;importorg.apache.commons.io.FileUtils;/*** Servlet user to accept file upload*/
public class FileUploadServlet extendsHttpServlet {private static final long serialVersionUID = 1L;private String serverPath = "e:/";protected voiddoGet(HttpServletRequest request, HttpServletResponse response)throwsServletException, IOException {
response.getWriter().append("Served at: ").append(request.getContextPath());
System.out.println("进入后台...");//1.创建DiskFileItemFactory对象,配置缓存用
DiskFileItemFactory diskFileItemFactory = newDiskFileItemFactory();//2. 创建 ServletFileUpload对象
ServletFileUpload servletFileUpload = newServletFileUpload(diskFileItemFactory);//3. 设置文件名称编码
servletFileUpload.setHeaderEncoding("utf-8");//4. 开始解析文件
try{
List items =servletFileUpload.parseRequest(request);for(FileItem fileItem : items) {if (fileItem.isFormField()) { //>> 普通数据
String info = fileItem.getString("utf-8");
System.out.println("info:" +info);
}else { //>> 文件//1. 获取文件名称
String name =fileItem.getName();//2. 获取文件的实际内容
InputStream is =fileItem.getInputStream();//3. 保存文件
FileUtils.copyInputStreamToFile(is, new File(serverPath + "/" +name));
}
}
}catch(Exception e) {
e.printStackTrace();
}
}protected voiddoPost(HttpServletRequest request, HttpServletResponse response)throwsServletException, IOException {
doGet(request, response);
}
}
使用WebUploader组件上传
分片、并发,预览、压缩,多途径添加文件夹(文件多选,拖拽等),妙传
页面样式使用
使用webuploader上传文件上传