java一款支持批量上传的代码示例
效果图如下:该工程包含五个源文件:BackGroundService.java、BeanControler.java、EventListenerImpl.java、FileUploadListener.java和FileUploadStatus.java;以及2个jsp页面。源码已提供免费下载,下载后直接部署到tomcat中运行即可。BackGroundService.java:[java]package liuzuochen.sample.upload;/*** <p>Title: 后台服务</p>** <p>Description: 为客户端提供上传及文件传输状态查询服务</p>**/import java.io.File;import java.io.IOException;import java.util.List;import javax.servlet.ServletException;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.*;public class BackGroundService extends javax.servlet.http.HttpServlet implementsjavax.servlet.Servlet {public static final String UPLOAD_DIR = "/upload";public static final String DEFAULT_UPLOAD_FAILURE_URL = "index2.jsp";public BackGroundService() {super();}protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException {doPost(request, response);}/*** 从文件路径中取出文件名*/private String takeOutFileName(String filePath) {int pos = filePath.lastIndexOf(File.separator);if (pos > 0) {return filePath.substring(pos + 1);} else {return filePath;}}/*** 从request中取出FileUploadStatus Bean*/public static FileUploadStatus getStatusBean(HttpServletRequest request) {BeanControler beanCtrl = BeanControler.getInstance();return beanCtrl.getUploadStatus(request.getRemoteAddr());}/*** 把FileUploadStatus Bean保存到类控制器BeanControler*/public static void saveStatusBean(HttpServletRequest request,FileUploadStatus statusBean) {statusBean.setUploadAddr(request.getRemoteAddr());BeanControler beanCtrl = BeanControler.getInstance();beanCtrl.setUploadStatus(statusBean);}/*** 删除已经上传的文件*/private void deleteUploadedFile(HttpServletRequest request) {FileUploadStatus satusBean = getStatusBean(request);for (int i = 0; i < satusBean.getUploadFileUrlList().size(); i++) {File uploadedFile = new File(request.getRealPath(UPLOAD_DIR) +File.separator +satusBean.getUploadFileUrlList().get(i));uploadedFile.delete();}satusBean.getUploadFileUrlList().clear();satusBean.setStatus("删除已上传的文件");saveStatusBean(request, satusBean);}/*** 上传过程中出错处理*/private void uploadExceptionHandle(HttpServletRequest request,String errMsg) throws ServletException, IOException {//首先删除已经上传的文件deleteUploadedFile(request);FileUploadStatus satusBean = getStatusBean(request);satusBean.setStatus(errMsg);saveStatusBean(request, satusBean);}/*** 初始化文件上传状态Bean*/private FileUploadStatus initStatusBean(HttpServletRequestrequest) {FileUploadStatus satusBean = new FileUploadStatus();satusBean.setStatus("正在准备处理");satusBean.setUploadTotalSize(request.getContentLength());satusBean.setProcessStartTime(System.currentTimeMillis());satusBean.setBaseDir(request.getContextPath() + UPLOAD_DIR);return satusBean;}/***补充:软件开发 , Java ,
上一个:java反射机制——解析
下一个:JAVA Iterator 详解 代码
- 更多JAVA疑问解答:
- java怎么在线读取ftp服务器上的文件内容
- 关于程序员的职业规划
- HTML和JSP矛盾吗?
- java小程序如何打包?
- java怎么split路径文件名?
- 关于Hibernate实体自身多对一的抓取问题
- 关于apache2+tomcat群集出现的问题
- SSH 导入导出excel 谁有这块的资料吗?
- springmvc 加载一个jsp页面执行多个方法 报404
- 关于用jquery 导入 excel
- java对时间进行循环放到List中
- 一个图片的输入输出程序,第一次调用某方法会中断,第二次调用则正常
- 请上过传智播客的人说一下传智播客怎么样呀!是不是像它说的那样好呀!
- spring的schema怎么配置
- 【菜鸟求助】SSH中怎么从JSP页面往后台传值呢