通过阿里OSS文件服务返回的URL获取文件流下载
我们都知道将文件上传到阿里的OSS文件服务上后,可以通过generatePresignedUrl(bucketName, key, expiration)方法获取该文件的防问路径,但是当我们知道该文件的访问路径该如何通过路径获取该文件的下载流呢?
1、截取文件访问路径,只要该文件的名称。
2、通过阿里API提供的getObject方法获取文件信息
@GetMapping("/downLoadImage")public void downLoadImage(String fileName, HttpServletResponse response) {if (StringUtils.isNotBlank(fileName)) {OSSObject ossObject = downLoadImage(fileName);if (ossObject != null) {InputStream inputStream = ossObject.getObjectContent();int buffer = 1024 * 10;byte data[] = new byte[buffer];try {response.setContentType("application/octet-stream");// 文件名可以任意指定response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName,"UTF-8"));//将文件名转为ASCLL编码int read;while ((read = inputStream.read(data)) != -1) {response.getOutputStream().write(data, 0, read);}response.getOutputStream().flush();response.getOutputStream().close();ossObject.close();} catch (UnsupportedEncodingException e) {// TODO Auto-generated catch block e.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch block e.printStackTrace();}}}}public OSSObject downLoadImage(String fileName) {OSSClient ossClient = getInstance();Date expiration = new Date(new Date().getTime() + 3600 * 1000);GeneratePresignedUrlRequest request = new GeneratePresignedUrlRequest(bucketName, fileName, HttpMethod.GET);// 设置过期时间。 request.setExpiration(expiration);// 生成签名URL(HTTP GET请求)。URL signedUrl = ossClient.generatePresignedUrl(request);// 使用签名URL发送请求。Map<String, String> customHeaders = new HashMap<String, String>();// 添加GetObject请求头。//customHeaders.put("Range", "bytes=100-1000");OSSObject object = ossClient.getObject(signedUrl, customHeaders);return object;}public static synchronized OSSClient getInstance() {OSSClient ossClient = connInstances.get("oss");if (ossClient == null) {synchronized (FileUploadServiceImpl.class) {if (ossClient == null) {ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);}}}return ossClient;}
转载于:https://www.cnblogs.com/Amaris-Lin/p/9849308.html
通过阿里OSS文件服务返回的URL获取文件流下载相关推荐
- 阿里云oss上传svg等格式的文件,返回的路径打开后是下载而不是预览
在做的一个项目,阿里云oss上传svg等格式的文件,返回的路径打开后是下载而不是预览.之后web同事跟产品说不好处理,换回了使用jpg格式的文件.但是最终这个问题都是要解决的,产品要求下期也要上传sv ...
- java获取url文件格式_本地文件/url获取文件类型
package com.cjw.baidu.ocr; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringU ...
- java根据远程URL获取文件类型
通过给定url中获取文件文件类型,开始想到的方法是通过在url中切割获取,如以下url,可以通过切割字符串的方式获取到文件类型是jpg格式的: http://bpic.588ku.com/elemen ...
- 通过url获取文件名称
如何通过一个文件的下载链接(url)获取到需要下载的文件名称是我们经常要遇到的一个问题.本文提供两种解决办法,基本上这两种解决办法结合可以处理大部分情况. 一.获取header字段Content-Di ...
- vue项目下载兼容ie,接口返回url;url转二进制流下载;
最近在做后台管理系统 vue +若依 记录导出订单(表格)遇到的问题 1.后台返回了表格的路径 url 最简单的方法 a 标签搞定 <a :href="record.url" ...
- Qt之HTTP之模仿迅雷——根据URL获取文件信息(上)
一.简述 最近再看Qt实现HTTP下载时,看了一下迅雷下载,发现迅雷做的很好,不论是界面还是下载速度都非常不错,今天看到迅雷9新建下载任务一个神奇效果,复制下载url到输入框,迅雷能够自动解析下载文 ...
- C# 根据url获取文件流流
/// <summary>/// 根据url获取流/// </summary>/// <param name="url">路径</para ...
- Java 根据网络地址URL获取文件
一.功能需求 系统需要根据提供的文件地址URL获取该文件,代码实现如下: 二.解决办法 /*** 根据URL地址获取文件* @param path URL网络地址* @return File*/pri ...
- Qt 之 模仿迅雷 根据Url获取文件信息——上
一.简述 最近再看Qt实现HTTP下载时,看了一下迅雷下载,发现迅雷做的很好,不论是界面还是下载速度都非常不错,今天看到迅雷9新建下载任务一个神奇效果,复制下载url到输入框,迅雷能够自动解析下载文件 ...
- 根据url获取文件流MultipartFile
常见的url包含网络上一些图片的链接,静态服务器上边的图片地址等等,有时候一些链接内嵌到自己项目中时,由于图片大小或者网站的一些防盗处理,往往无法正确加载图片,因此需要单独做处理: 1.pom文件添加 ...
最新文章
- 扫描服务器端口信息工具,服务器端口扫描工具
- TensorFlow Lattice:灵活、可控、可解释的机器学习
- 完整项目基础架构精简版-实现权限管理
- Python基础教程(四):循环语句
- android studio 反编译修改versioncode,在android studio 中修改versioncode 跟versionname(示例代码)...
- Asp.net Core基于MVC框架实现PostgreSQL操作
- U-boot 打补丁,编译,设置环境变量,
- 转载 Spark性能优化指南——基础篇
- 互联网日报 | 2月22日 星期一 | 小米回应造车传闻;吉利确认组建全新纯电动汽车公司;沈腾成中国影史首位200亿票房演员...
- laravel 5 自定义全局函数,怎么弄呢?
- github语音识别对对_语音识别尝试方向
- css2d变形模块,CSS变形transform(2d)
- github如何写博客
- Azure NSG Flow Log 引发的自嗨 -- 日志查询分析
- 细节决定成败,聊聊防御性编程
- GUI(Graphical User Interface)
- uniapp 选择元素,操作元素属性
- 正式揭牌!华为与清华北大、中科院共建博士后工作站!
- C语言-思路与编程1
- 《大腕》中经典台词的多个版本