@RequestMapping("/download")
public void downloadNet(String uri, boolean isOnLine, HttpServletResponse response) throws MalformedURLException { // 下载网络文件
InputStream inStream = null;
OutputStream fs = null; URL url = new URL(uri);
String filename = uri.substring(uri.lastIndexOf("/") + 1);
try {
URLConnection conn = url.openConnection();
// 设置超时间为3秒
conn.setConnectTimeout(3 * 1000);
// 防止屏蔽程序抓取而返回403错误
conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36");
inStream = new BufferedInputStream(conn.getInputStream());
int len = 0;
response.reset();
if (isOnLine) { // 在线打开方式
response.setContentType(conn.getContentType());
response.setHeader("Content-Disposition", "inline; filename=" + filename);
response.setHeader("Access-Control-Allow-Origin", cors);
response.setHeader("Access-Control-Allow-Credentials", "true");
response.setHeader("Access-Control-Allow-Headers", corsHeader);
response.setHeader("Vary", "Origin");
// 文件名应该编码成UTF-8
} else { // 纯下载方式
response.setContentType("application/x-msdownload");
response.setHeader("Content-Disposition", "attachment; filename=" + filename);
response.setHeader("Access-Control-Allow-Origin", cors);
response.setHeader("Access-Control-Allow-Credentials", "true");
response.setHeader("Access-Control-Allow-Headers", corsHeader);
response.setHeader("Vary", "Origin");
} fs = new BufferedOutputStream(response.getOutputStream()); byte[] buffer = new byte[1024];
while ((len = inStream.read(buffer)) > 0)
fs.write(buffer, 0, len);
} catch (IOException e) {
e.printStackTrace();
} finally {
if (null != inStream) {
try {
inStream.close();
} catch (IOException e) {
}
}
if (null != fs) {
try {
fs.close();
} catch (IOException e) {
}
}
}
}

springcloud 通过后端去下载和预览文件,要重设跨域允许的更多相关文章

  1. 【微信小程序云开发】1分钟学会实现上传、下载、预览、删除图片,并且以九宫格展示图片

    大家好,我叫小秃僧 这篇文章是讲解云开发如何上传.下载.预览.删除图片,并且以九宫格展示图片的功能 @ 目录 1. 实现效果 2.JavaScript代码 3.wxml代码 4.wxss代码 1. 实 ...

  2. 文件批量上传-统一附件管理器-在线预览文件(有互联网和没有两种)--SNF快速开发平台3.0

    实际上在SNF里使用附件管理是非常简单的事情,一句代码就可以搞定.但我也要在这里记录一下统一附件管理器能满足的需求. 通用的附件管理,不要重复开发,调用尽量简洁. 批量文件上传,并对每个文件大小限制, ...

  3. Windows-快速预览文件-QuickLook

    开源.免费的文件快速预览工具, 支持图片.文档.音视频.代码文本.压缩包等多种格式. 获得 Mac OS 空格键快速预览文件相同的体验 效果图 文件夹 音视频 浏览 压缩包,文本 支持的格式: 图片: ...

  4. 解决微信官方SDK给出1.4.0等版本没有预览文件(previewFile)等接口

    使用苹果手机测试 调用微信的js-sdk在系统中实现上传.预览附件的功能.在自己的手机测试通过后,直接丢给QA测试了 本以为相安无事了,没想到QA用安卓手机测的时候居然不得,使用的是下载下来的jwei ...

  5. 数据库下载word预览功能的研究

    本文参考了这里的一些方法http://tobetobe.blog.51cto.com/1392243/354420 一直想通过缓存来实现,奈何技术不够,走了曲线救国的思路,先下载,然后预览,删除下载文 ...

  6. vs2015下载及预览与发布

    VS2015 RC发布下载,通用Windows平台必备神器! 几个月前微软发布了Visual Studio 2015的技术预览版本,之后又先后发布了6个更新版本.如今,微软已在其官方页面中公布了最新开 ...

  7. Java 文件本地上传、下载和预览的实现

    以下方法为通用版本 实测图片和pdf 都没有问题 上传方法需要前端配合post请求 ,下载前端用a标签就可以,预览 前端使用ifrme标签   ,就可以实现基本功能... 1.文件本地上传 publi ...

  8. 在线预览文件(pdf)

    1.flash版(借助flexpaper工具) 可以把pdf文件用pdf2swf工具转换成swf文件.下载地址http://www.swftools.org/download.html 转换代码如下: ...

  9. js 文件异步上传 显示进度条 显示上传速度 预览文件

    通常文件异步提交有几个关键 1.支持拖拽放入文件.2.限制文件格式.3.预览图片文件.4.上传进度,速度等,上传途中取消上传.5.数据与文件同时上传 现在开始笔记: 需要一个最基础的元素<inp ...

随机推荐

  1. 基于JQ的三级联动菜单选择

    <!-- author:青芒 --> <!DOCTYPE html> <html lang="en"> <head> <met ...

  2. 洛谷【P2024】[NOI2001]食物链

    浅谈并查集:https://www.cnblogs.com/AKMer/p/10360090.html 题目传送门:https://www.luogu.org/problemnew/show/P202 ...

  3. vlan之间Hybrid端口配置

    要求:1.PC1和PC2不能互相访问,但是都能访问PC3 SW1配置:vlan batch 10 20 100 interface Ethernet0/0/1                     ...

  4. linux find 实例 ***

    使用选项:find [路径] <表达式> [操作] 1.name选项,按名称查找查找当前目录下的manage.py 文件:find . -name ‘manage.py’ 2.atime/ ...

  5. 转载:MongoDB 在 58 同城百亿量级数据下的应用实践

    为什么要使用 MongoDB? MongoDB 这个来源英文单词“humongous”,homongous 这个单词的意思是“巨大的”.“奇大无比的”,从 MongoDB 单词本身可以看出它的目标是提 ...

  6. Oracle 数据库加密

    数据加密 动态数据(data in motion)和静态数据(data at rest),除了手动加密,其他的加密都需要oracle企业版的高级加密(额外收费——)  1 静态数据加密 Example ...

  7. git学习 删除远程分支

    2种方法删除远端分支: git branch -r -d origin/branch-name    // -r:  远端:    -d:删除 git push origin :branch-name ...

  8. libstdc++.so.6

    libstdc++.so.6遇到的问题: 1.提示version `GLIBCXX_3.4.14' not found /usr/lib64/libstdc++.so.: version `GLIBC ...

  9. 数据库连接池在Tomcat中的几种配置方法

    数据库连接是一种关键的有限的昂贵的资源,这在多用户网页应用程序中体现的尤为突出.对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标,数据库连接池正是针对这个问题提出的. ...

  10. oracle数据库部分技巧

    由于笔者在操作数据库时,遇到几个以前不太常见的操作,感觉有必要记录一下,如下: 1.查被锁表  SELECT object_name, machine, s.sid, s.serial#  FROM ...