Java 多文件上传存储到不同的路径及某上传框中未选择上传文件的处理方法
来源:互联网 发布:pos机s90如何设置网络 编辑:程序博客网 时间:2024/05/20 06:53
近期写代码,要求多文件同时上传,但是每个文件要求上传到不同的路径去,研究了下,终于搞定,当然中间还遇到如果有某个上传框未选择文件出现的FileUploadException异常的处理办法(如果不管的话程序到这里就停止了,导致后边的文件无法继续上传)。
先看页面:
点击从目录选择就会出现浏览框选择文件,点击修改设置就会提交表单,当然这里使用的依旧是<input type="file">上传的,可能有些人看着感觉不像,原因是使用了js改了下,嘿嘿嘿
来上Java代码
import java.io.File;import java.io.FileNotFoundException;import java.util.Iterator;import java.util.List;import javax.servlet.http.HttpServletRequest;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;import org.apache.log4j.Logger;public class UploadService {private static final Logger logger = Logger.getLogger(UploadService.class);private static String uploadPath = null;// 上传文件的目录private static String tempPath = null; // 临时文件目录private static File uploadFile = null;private static File tempPathFile = null;private static int sizeThreshold = 1024*2000;private static int sizeMax = 50*1024*1024;//初始化static{ tempPath = "E://g"; tempPathFile = new File(tempPath); if (!tempPathFile.exists()) { tempPathFile.mkdirs(); }}public static boolean upload(HttpServletRequest request){logger.info("uploading a file");boolean flag = true;//检查输入请求是否为multipart表单数据。boolean isMultipart = ServletFileUpload.isMultipartContent(request);//若果是的话if(isMultipart){ /**为该请求创建一个DiskFileItemFactory对象,通过它来解析请求。执行解析后,所有的表单项目都保存在一个List中。**/ try { DiskFileItemFactory factory = new DiskFileItemFactory(); factory.setSizeThreshold(sizeThreshold); // 设置缓冲区大小,这里是4kb factory.setRepository(tempPathFile);// 设置缓冲区目录 ServletFileUpload upload = new ServletFileUpload(factory); upload.setHeaderEncoding("UTF-8");//解决文件乱码问题 upload.setSizeMax(sizeMax);// 设置最大文件尺寸 List<FileItem> items = upload.parseRequest(request); Iterator<FileItem> itr = items.iterator();//所有的表单项 //保存文件 while (itr.hasNext()){ FileItem item = (FileItem) itr.next();//循环获得每个表单项 if (!item.isFormField()){//如果是文件类型 String name = item.getName();//获得文件名 包括路径啊 if(name!=null){ File fullFile=new File(item.getName()); //获取该上传流在表单中name的属性值<input type="file" name="mac">取出来就是mac String nameA=item.getFieldName();//!!!!!!!!! 达到根据不同的上传框上传到不同的路径,这里把存储路径直接弄成了和mac一样了,大家可以根据自己的要求随意改 uploadPath = "E://"+nameA; uploadFile = new File(uploadPath); if (!uploadFile.exists()) { uploadFile.mkdirs(); }// 如果某个上传框没有选择文件上传就直接执行else if(!fullFile.getName().equals("")){ File savedFile=new File(uploadPath,fullFile.getName()); item.write(savedFile); logger.info("upload a file for "+nameA+" successfully"); }else{ logger.info("no file upload for "+nameA); } } } } }catch(FileNotFoundException e){ // 这个异常其实在上面已经解决了,估计没机会出现了,哈哈哈 logger.info("no file upload for "); } catch (FileUploadException e) { flag = false; logger.info("error occured when uploading a file "); e.printStackTrace(); }catch (Exception e) { flag = false; logger.info("error occured!! when uploading a file "); e.printStackTrace(); } }else{ flag = false; logger.info("the enctype must be multipart/form-data"); System.out.println("the enctype must be multipart/form-data"); }return flag;} }
嗯嗯,看代码吧,奥妙都在里面了
0 0
- Java 多文件上传存储到不同的路径及某上传框中未选择上传文件的处理方法
- 上传文件的路径处理
- 自定义上传文件路径的处理方案
- php上传文件并存储到mysql数据库的方法
- 文件上传的方法
- 文件上传的方法
- 文件上传 的方法
- 上传文件的方法
- 上传文件的方法
- jFinal上传文件的方法 ,上传到oss
- Asp.Net上传文件示例(保存文件路径到数据库) 选择自 AppleBBS 的 Blog
- java 上传文件到七牛云存储的demo
- servlet 处理文件上传的方法【记录】
- 初学者上传文件到github的方法
- PHP:上传文件到服务器的方法
- 上传文件到github的方法
- 上传文件到github的方法
- 上传文件到Linux系统的方法
- 用android:clipChildren来实现红心变大特效 - 喜糖
- AngularJS开发指南06:表达式
- 对SIGPIPE等软中断信号的处理方式
- 正则表达式中Matcher的group()、start()、end()带参方法解析
- Visual Studio 2008用过一段时间后编辑器自动提示(智能提示:Intellisense)功能失效
- Java 多文件上传存储到不同的路径及某上传框中未选择上传文件的处理方法
- uploadify来实现多文件上传
- Sonar及其eclipse插件的安装
- 用过滤器验证用户登录功能
- dom4j jar创建XML
- [LeetCode] Linked List Cycle II
- 如何优化app的运行内存占用
- 关于sax解析XML文件的简单流程+工具类
- Zookeeper集群模式部署配置