java文件上传
来源:互联网 发布:重庆seo顾问服务 编辑:程序博客网 时间:2024/05/16 07:27
</pre><pre name="code" class="java">/** * 二进制方式上传文件 * @Title: batyfileupload * @param files * @param request * @return * @throws */ @RequestMapping("/upload") public ModelAndView batyfileupload( @RequestParam("file") MultipartFile[] files, HttpServletRequest request) { UploadUtil uploadUtil = new UploadUtil(); Map<String, String> readFiles = uploadUtil.fileByteUpload(files, request); return new ModelAndView("presentaudit/uploadexcel"); }
LOGGER.info("读取文件开始..."); UploadUtil uploadUtil = new UploadUtil(); // String path = uploadUtil.readUploadFiles(request); // // 上传文件并将文件保存在服务器本地 单个文件 Map<String, String> readFiles = uploadUtil .readUploadManyFiles(request); // 上传文件并将文件保存在服务器本地,用于多文件同时上传的情况 LOGGER.info("读取文件完成");
/** * 文件上传* @ClassName: UploadUtil * @author liu.li * @date 2016年4月27日 下午2:08:46 */public class UploadUtil { private static Logger logger = Logger.getLogger(UploadUtil.class); private static String FILEPATH = "/system.properties"; // 文件上传的配置文件 private static String EXCELUPLOADPREFIX = "uploadExcel_";// 上传后存储的文件名称前缀 private static String DEFAULT_FILEPATH = "D:\\UPLOAD\\";// 上传的路径 /** * 文件上传 * @Title: readUploadFiles * @param request * @throws Exception * @throws IOException * @throws IllegalStateException * @throws UnsupportedEncodingException */ public String readUploadFiles(HttpServletRequest request) throws IllegalStateException, IOException { request.setCharacterEncoding("UTF-8"); // 处理中文乱码问题 String path = null; // 创建一个通用的多部分解析器 CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver( request.getSession().getServletContext()); // 判断 request 是否有文件上传,即多部分请求 if (multipartResolver.isMultipart(request)) { // 转换成多部分request MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request; // 取得request中的所有文件名 Iterator<String> iter = multiRequest.getFileNames(); while (iter.hasNext()) { // 记录上传过程起始时的时间,用来计算上传时间 int pre = (int) System.currentTimeMillis(); // 取得上传文件 MultipartFile file = multiRequest.getFile(iter.next()); if (file != null) { // 取得当前上传文件的文件名称 String fileName = file.getOriginalFilename(); // 如果名称不为“”,说明该文件存在,否则说明该文件不存在 if (fileName.trim() != "") { logger.info("upload file name is " + fileName); // 重命名上传后的文件名 String fileNamenew = EXCELUPLOADPREFIX + timeStr() + file.getOriginalFilename(); // 定义上传路径 path = DEFAULT_FILEPATH + fileNamenew; logger.info("upload file path is" + path); File localFile = new File(path); file.transferTo(localFile); } } // 记录上传该文件后的时间 int finaltime = (int) System.currentTimeMillis(); logger.info( "process upload file user time" + (finaltime - pre)); } } return path; } /** * 多文件对应多模板 * 该方法会调用文件校验的方法,根据模板校验文件名称 * @Title: readUploadFilesCheckFile * @param request * @return Map<String, String> Map<文件名称, 存放路径> * @throws IOException * @throws IllegalStateException * @throws UnsupportedEncodingException */ public Map<String, String> readUploadManyFiles(HttpServletRequest request) throws IllegalStateException, IOException { Map<String, String> resMap = new HashMap<String, String>(); request.setCharacterEncoding("UTF-8"); // 处理中文乱码问题 String path = null; // 创建一个通用的多部分解析器 CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver( request.getSession().getServletContext()); // 判断 request 是否有文件上传,即多部分请求 if (multipartResolver.isMultipart(request)) { // 转换成多部分request MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request; // 取得request中的所有文件名 Iterator<String> iter = multiRequest.getFileNames(); while (iter.hasNext()) { // 记录上传过程起始时的时间,用来计算上传时间 int pre = (int) System.currentTimeMillis(); // 取得上传文件 MultipartFile file = multiRequest.getFile(iter.next()); if (file != null) { // 取得当前上传文件的文件名称 String fileName = file.getOriginalFilename(); /* * // 校验文件名,此处不再校验对于上传,所有的文件都处理 if (null == * excelModelMap.get(fileName)) { continue; } */ // 如果名称不为“”,说明该文件存在,否则说明该文件不存在 if (fileName.trim() != "") { logger.info("upload file name is " + fileName); // 重命名上传后的文件名 String fileNamenew = EXCELUPLOADPREFIX + timeStr() + file.getOriginalFilename(); // 定义上传路径 path = DEFAULT_FILEPATH + fileNamenew; logger.info("upload file path is" + path); File localFile = new File(path); file.transferTo(localFile); resMap.put(fileName.substring(0, fileName.lastIndexOf(".")), path); } } // 记录上传该文件后的时间 int finaltime = (int) System.currentTimeMillis(); logger.info( "process upload file user time" + (finaltime - pre)); } } return resMap; } /** * 采用apache.commons的FileUtils.copyInputStreamToFile方式 * @Title: fileByteUpload * @Description: TODO(这里用一句话描述这个方法的作用) * @param files * @return * @throws */ public static Map<String, String> fileByteUpload(MultipartFile[] files, HttpServletRequest request) { Map<String, String> resMap = new HashMap<String, String>(); if (files.length > 0) { for (MultipartFile multipartFile : files) { String path = ""; if (!multipartFile.isEmpty()) { String fileNamenew = EXCELUPLOADPREFIX + timeStr() + multipartFile.getOriginalFilename(); path = DEFAULT_FILEPATH + fileNamenew; request.getServletContext().getContextPath(); File destFile = new File(DEFAULT_FILEPATH, fileNamenew); try { // FileUtils.copyInputStreamToFile()这个方法里对IO进行了自动操作,不需要额外的再去关闭IO流 FileUtils.copyInputStreamToFile( multipartFile.getInputStream(), destFile);// 复制临时文件到指定目录下 resMap.put( multipartFile.getOriginalFilename().substring(0, multipartFile.getOriginalFilename() .lastIndexOf(".")), path); } catch (IOException e) { logger.error("上传文件异常:-->" + e); } } } } return resMap; } /** * 时间获取到毫秒 * @Title: timeStr * @Description: TODO(这里用一句话描述这个方法的作用) * @return * @throws */ public static String timeStr() { Calendar c = Calendar.getInstance();// 可以对每个时间域单独修改 int year = c.get(Calendar.YEAR); int month = c.get(Calendar.MONTH); int date = c.get(Calendar.DATE); int hour = c.get(Calendar.HOUR_OF_DAY); int minute = c.get(Calendar.MINUTE); int second = c.get(Calendar.SECOND); int MI = c.get(Calendar.MILLISECOND); String timestr = year + "" + month + "" + date + "" + hour + "" + minute + "" + second + "" + MI; return timestr; }}
0 0
- Java 文件上传 JQ 文件上传
- java文件上传原理
- java文件上传原理
- java上传文件
- 上传文件 JSP+java
- JAVA上传文件
- java上传文件
- java fileupload上传文件
- java-文件上传案例
- JAVA上传EXCEL文件
- java上传文件
- java 超大文件上传
- java上传文件实例
- java 文件上传
- JAVA 上传文件类
- JAVA之"文件上传"
- java文件上传
- java文件上传方法
- 并购百草味只是开始,好想你或将再创一个“好想你”
- UVA-10817 Headmaster's Headache
- 欢迎使用CSDN-markdown编辑器
- php PDO mysql
- arcgis中按属性计算的一些公式
- java文件上传
- java中hashcode与equals详解(集合中的用法)
- thread.yield()和thread.sleep(time)的理解
- android打造万能适配器
- js去掉html标签和去掉字符串文本的所有的空格
- windows常用命令
- unity3D学习【功能实现】之十三:简单式的理解协程和做下巡逻
- FZU-2109 Mountain Number(数位dp)
- css定位