Java文件上传下载
2017-04-16 11:22
176 查看
Java文件上传下载
相关 jar 包:commons-beanutils.jar
commons-collections.jar
commons-fileupload-1.2.2.jar
commons-io-2.4.jar
commons-lang.jar
commons-logging.jar
dom4j-1.6.1.jar
ezmorph-1.0.6.jar
jar 包下载:http://files.cnblogs.com/files/liaolongjun/common-jar.zip
void upload() throws Exception { for (FileItem item : FileUtil.getFileItems(request)) { ServletContext sc = request.getServletContext(); String path = sc.getRealPath("upload"); // 上传的文件存储路劲 String filename = item.getName(); File file = new File(path + File.separator + filename); System.out.println(file); if (file.exists() || file.createNewFile()) { item.write(file); // 保存文件 } // 输出 Base64 - item.get() 获取 byte[] System.out.println("data:" + item.getContentType() + ";base64," + new String(Base64.encodeBase64(item.get()))); } } void download() throws Exception { String filepath = request.getParameter("filepath"); File file = new File(filepath); response.reset(); response.setContentType("application/x-msdownload"); response.addHeader("Content-Disposition", "attachment; filename=\"" + URLEncoder.encode(file.getName(), "utf-8") + "\""); int fileLength = (int) file.length(); response.setContentLength(fileLength); FileUtil.i2o(new BufferedInputStream(new FileInputStream(file)), response.getOutputStream()); }
FileUtil.getFileItems 方法:
/** * DiskFileItemFactory 为解析器提供解析时的缺省的配置 <br> * ServletFileUpload 解析 InputStream,将一个表单域(比如,一个文件输入框)中的数据封装到一个FileItem对象上<br> * FileItem对象上提供了相应的方法来获取表单域中的数据 */ public static List<FileItem> getFileItems(HttpServletRequest request) { List<FileItem> fileItems = new ArrayList<>(); try { ServletFileUpload sfu = new ServletFileUpload(new DiskFileItemFactory()); for (Object obj : sfu.parseRequest(request)) { FileItem item = (FileItem) obj; if (!item.isFormField()) { // 是否普通表单域 fileItems.add(item); } } } catch (Exception e) { throw new RuntimeException(e); } return fileItems; }
FileUtil.i2o 方法:
public static void i2o(InputStream is, OutputStream os) { try { byte[] b = new byte[1024 * 1024]; // 一次读取1M int n = 0; while ((n = is.read(b)) != -1) os.write(b, 0, n);// 这个n还不能去了 is.close(); os.flush(); os.close(); } catch (IOException e) { e.printStackTrace(); } }
相关文章推荐
- java文件上传和下载(原创,根据RFC1867分析得到)
- 自己写的一个JSP上传文件和下载文件的JavaBean
- java上传下载文件的总结
- Java文件上传下载核心代码
- JAVA 文件上传与下载
- java文件上传下载
- jaVA使用FTP上传下载文件的问题
- java做的比较完善的FTP连接上传下载文件【转】
- java中的文件上传及下载组件介绍
- JAVA连接FTP服务器,并上传/下载文件代码
- java文件上传下载
- 文件上传下载:通过java方法把附件保存到clob字段中
- Java文件上传下载 源码
- JAVA实现FTP文件上传下载文件
- java做的比较完善的FTP连接上传下载文件
- SERVLET与JSP_文件上传下载(4)-java
- 自己写的一个JSP上传文件和下载文件的JavaBean
- java做的比较完善的FTP连接上传下载文件
- 用Java实现FTP批量大文件上传下载
- Java中如何使用组件实现文件上传下载