Java-从url获取文件信息,压缩并导出
来源:互联网 发布:中国网络作家数量 编辑:程序博客网 时间:2024/06/06 02:18
Java-从url获取文件信息,压缩并导出
本文主要用来从url获取文件输入流,并且将其加入zip的输出流并导出
环境
jfinal
tomcat
jdk1.7
jfinal并不是官网标准的框架。
目录
- Java-从url获取文件信息压缩并导出
- 1从url获取文件信息
- 1从url获取文件的输入流
- 2从url获取文件名
- 2输出
- 1 index业务处理压缩导出
- 2 zipAction处理各种流压缩具体实现
- 3 encodeFileName文件名处理
- 1从url获取文件信息
1从url获取文件信息
文件1:GetFile.java
结构:
import java.io.IOException;import java.io.InputStream;import java.io.UnsupportedEncodingException;import java.net.MalformedURLException;import java.net.URL;import java.net.URLConnection;import java.util.List;import java.util.Map;import java.util.Set;public class GetFile { //1.1从url获取文件的输入流 public InputStream getFileInputStream(String url) throws Exception{} //1.2从url获取文件名 public String getFileName(String url) throws IOException{}}
1.1从url获取文件的输入流
public InputStream getFileInputStream(String url) throws Exception{ InputStream murl = new URL(url).openStream(); return murl; }
1.2从url获取文件名
public String getFileName(String url) throws IOException { String filename = ""; boolean isok = false; // 从UrlConnection中获取文件名称 try { URL myURL = new URL(url); URLConnection conn = myURL.openConnection(); if (conn == null) { return null; } Map<String, List<String>> hf = conn.getHeaderFields(); if (hf == null) { return null; } Set<String> key = hf.keySet(); if (key == null) { return null; } for (String skey : key) { List<String> values = hf.get(skey); for (String value : values) { String result; try { result = new String(value.getBytes("ISO-8859-1"), "GBK"); int location = result.indexOf("filename"); if (location >= 0) { result = result.substring(location + "filename".length()); filename = result .substring(result.indexOf("=") + 1); isok = true; } } catch (UnsupportedEncodingException e) { e.printStackTrace(); }// ISO-8859-1 UTF-8 gb2312 } if (isok) { break; } } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return filename; }
2输出
文件2:ZipController.java
结构:
import com.jfinal.core.Controller;import org.apache.commons.codec.binary.Base64;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.*;import java.net.URLEncoder;import org.apache.tools.zip.ZipEntry;import org.apache.tools.zip.ZipOutputStream;public class ZipController extends Controller { //2.1 public void index() throws IOException {} //2.2 public void zipAction(String url,InputStream is,ZipOutputStream zos,GetFile gf,byte[] buffer) throws Exception{} //2.3 public String encodeFileName(HttpServletRequest request, String fileName) throws UnsupportedEncodingException{}}
2.1 index()–业务处理,压缩,导出。
public void index() throws IOException { String fileName = "List"; HttpServletResponse response = getResponse(); HttpServletRequest request = getRequest(); response.setHeader("Connection", "close"); response.setHeader("Content-Type", "application/vnd.ms-excel;charset=UTF-8"); String filename = System.currentTimeMillis() + fileName+".zip"; filename = encodeFileName(request, filename); response.setHeader("Content-Disposition", "attachment;filename=" + filename); OutputStream out = null; out = response.getOutputStream(); try { // create byte buffer byte[] buffer = new byte[1024]; ZipOutputStream zos = new ZipOutputStream(out); GetFile gf = new GetFile(); InputStream is= null; String url1 = "http://xxxxxxxxxxx"; String url2 = "http://xxxxxxxxxxx"; zipAction(url1,is,zos,gf,buffer); zipAction(url2,is,zos,gf,buffer); zos.closeEntry(); zos.close(); is.close(); }catch (Exception ioe) { System.out.println("Error creating zip file" + ioe); } }
2.2 zipAction()–处理各种流,压缩具体实现
public void zipAction(String url,InputStream is,ZipOutputStream zos,GetFile gf,byte[] buffer) throws Exception{ is = gf.getFileInputStream(url); String fileName1 = gf.getFileName(url); zos.putNextEntry(new ZipEntry(fileName1)); int length; while ((length = is.read(buffer)) > 0) { zos.write(buffer, 0, length); } }
2.3 encodeFileName()–文件名处理
public String encodeFileName(HttpServletRequest request, String fileName) throws UnsupportedEncodingException { String agent = request.getHeader("USER-AGENT"); if (null != agent && -1 != agent.indexOf("MSIE")) { return URLEncoder.encode(fileName, "UTF-8"); } else if (null != agent && -1 != agent.indexOf("Mozilla")) { return "=?UTF-8?B?"+ (new String(Base64.encodeBase64(fileName.getBytes("UTF-8")))) + "?="; } else { return fileName; } }
阅读全文
0 0
- Java-从url获取文件信息,压缩并导出
- Java 从网页指定url获取图片并压缩到本地
- Java 从网页指定URL获取文件
- C# 获取文件信息并导出Excel,Xml报表
- C# 获取文件信息并导出Excel,Xml报表
- C# 获取文件信息并导出Excel,Xml报表
- java导出excel并压缩
- Java从URL获取数据并传JSON数据
- 从URL获取文件保存到本地的JAVA代码
- 从URL获取文件保存到本地的JAVA代码
- java--根据URL获取信息
- java导出word并压缩,含有表
- java图片的导出,并压缩
- C#windowForm 从php函数返回的Url获取到json并解析,下载文件
- Java程序使用httpClient发送Url链接,并获取返回的数据信息
- Java通过Spring MVC导出批量Excel文件压缩包,并弹出下载框
- java:获取文件信息
- Java通过URL下载网络文件,获取文件流并修改文件名
- [Android 5.1] 多用户管理UserManager相关整理
- unable to read TLD "META-INF/c.tld" jstl1.2.jar
- 适配器模式
- gdb调试多线程程序总结
- 金山云完成D轮融资 中国公有云IaaS市场三甲竞争格局初定
- Java-从url获取文件信息,压缩并导出
- 给咪蒙交智商税,值吗?
- 秒杀系统架构分析与实战
- 学习11
- 【胖张】spring拦截器自定义拦截
- springboot系列教程(三)——配置方式、多环境配置
- 删除Myeclipse被废弃的workspace记录
- opencv学习系列:采用videoInput类对视频处理
- STM32开源项目——智能鞋柜