java实现文件下载功能,自动弹出保存窗口
2015-10-30 16:03
841 查看
@RequestMapping(value="downLoadFromUrl")
public void downLoadFromUrl(HttpServletRequest request,HttpServletResponse response,String downloadUrl,String ip,String longitude,String latitude) throws IOException{
URL url = new URL(downloadUrl);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
//设置超时间为3秒
conn.setConnectTimeout(3*1000);
//防止屏蔽程序抓取而返回403错误
conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
//得到输入流
InputStream inputStream = conn.getInputStream();
try {
String fileName = "aaa.jpg";
fileName = new String(fileName.getBytes("UTF-8"),"ISO8859-1");
response.setContentType("application/octet-stream");
response.addHeader("Content-Disposition", "attachment;filename="+fileName);
String len = String.valueOf(inputStream.available()/1000+"k");
response.setHeader("Content-Length", len);
OutputStream out = response.getOutputStream();
byte[] getData = readInputStream(inputStream);
out.write(getData);
inputStream.close();
out.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 从输入流中获取字节数组
* @param inputStream
* @return
* @throws IOException
*/
public static byte[] readInputStream(InputStream inputStream) throws IOException {
byte[] buffer = new byte[1024];
int len = 0;
ByteArrayOutputStream bos = new ByteArrayOutputStream();
while((len = inputStream.read(buffer)) != -1) {
bos.write(buffer, 0, len);
}
bos.close();
return bos.toByteArray();
}
public void downLoadFromUrl(HttpServletRequest request,HttpServletResponse response,String downloadUrl,String ip,String longitude,String latitude) throws IOException{
URL url = new URL(downloadUrl);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
//设置超时间为3秒
conn.setConnectTimeout(3*1000);
//防止屏蔽程序抓取而返回403错误
conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
//得到输入流
InputStream inputStream = conn.getInputStream();
try {
String fileName = "aaa.jpg";
fileName = new String(fileName.getBytes("UTF-8"),"ISO8859-1");
response.setContentType("application/octet-stream");
response.addHeader("Content-Disposition", "attachment;filename="+fileName);
String len = String.valueOf(inputStream.available()/1000+"k");
response.setHeader("Content-Length", len);
OutputStream out = response.getOutputStream();
byte[] getData = readInputStream(inputStream);
out.write(getData);
inputStream.close();
out.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 从输入流中获取字节数组
* @param inputStream
* @return
* @throws IOException
*/
public static byte[] readInputStream(InputStream inputStream) throws IOException {
byte[] buffer = new byte[1024];
int len = 0;
ByteArrayOutputStream bos = new ByteArrayOutputStream();
while((len = inputStream.read(buffer)) != -1) {
bos.write(buffer, 0, len);
}
bos.close();
return bos.toByteArray();
}
相关文章推荐
- java static关键字
- 配置SWT Java开发环境
- springmvc上传多图片
- springmvc 环境配置图
- JavaWeb 学习
- java读取txt文件内容
- java 为pdf添加水印图片
- java 为pdf添加水印图片
- springmvc 1
- SpringMVC中处理404静态页面操作
- java 乱码原因分析
- spring mvc和struts2比较
- 详解java类的生命周期
- 解决在tomecat启动时报 java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListen
- java super关键字
- spring的jdbc事务管理2
- 关于Eclipse如何加入Gradle文件与Android Studio两个平台一起开发,工作目录不发生变化 转来的
- java字符串的各种编码转换
- Java中使用正则表达式处理文本数据
- Myeclipse应用------常用快捷键