Java实现下载和删除oss图片、音频等等
实现下载功能,首先需要实现上传功能, 上传实现可以参数我之前写的文章:https://blog.csdn.net/u014373554/article/details/83650304
实现方式:是根据上传完成后会返回url。所以下载也是根据url实现下载方法。具体实现请看下面代码:
以图片为例:
返回的url地址格式是: http://aa.xxxx.com:8080/FeedBack/xx/iOS_xxx_35671549541105750.jpg
一、文件下载
1、controller层写法:比较简单
/**
* 文件下载
* @param url 文件的url
* @param request
* @param response
* @throws Exception
*/
@RequestMapping(value = "/download",method = RequestMethod.GET)
@ResponseBody
public void downLoadFile(String url,HttpServletRequest request,HttpServletResponse response) throws Exception{
oSSImageService.downLoadFile(url, request, response);
}
2、service层:
@Override
public void downLoadFile(String url, HttpServletRequest request,
HttpServletResponse response) throws Exception {
//上传图片完成会返回前端生成的url为: http://aa.xxxx.com:8080/FeedBack/xx/iOS_xxx_35671549541105750.jpg
// fileName :前台传入的文件名(主要是标识文件是什么格式.png或.zip)为:iOS_xxx_35671549541105750.jpg
// ossKey:上传文件时阿里云返回的标识 :FeedBack/xx/iOS_xxx_35671549541105750.jpg 这个就是文件标识
OSSClientUtil oss = new OSSClientUtil();
String ossKey = OSSGetURLAndKey.ossGetKey(url);
String fileName = OSSGetURLAndKey.ossGetURL(url);
System.out.println("ossKey="+ossKey +"---------fileName=" +fileName);
oss.downLoadFile(fileName, ossKey, request, response);
}
3、OSSGetURLAndKey工具类方法
public class OSSGetURLAndKey {
/**
* 获取文件名称
* @param url
* @return
*/
public static String ossGetURL(String url){
String[] strArray = url.split("/");
String fileName = strArray[strArray.length-1];
return fileName;
}
/**
* 获取ossKey
* @param url
* @return
*/
public static String ossGetKey(String url){
String[] strArray = url.split(":");
String urls = strArray[2].replace("8080/", ""); //这里上传的图片后,访问的时候是带端口的,所有需要单独处理掉
return urls;
}
}
4、downLoadFile方法:主要核心实现方式:在上传里面包装一个下载文件的类
public void downLoadFile(String fileName, String ossKey, HttpServletRequest request,HttpServletResponse response) throws IOException{
try {
//上传图片完成会返回前端生成的url为: http://aa.xxxx.com:8080/FeedBack/xx/iOS_xxx_35671549541105750.jpg
// fileName :前台传入的文件名(主要是标识文件是什么格式.png或.zip)为: iOS_xxx_35671549541105750.jpg,说白了就是文件名称
// ossKey:上传文件时阿里云返回的标识 :FeedBack/xx/iOS_xxx_35671549541105750.jpg 这个就是文件标识,说白就是文件的地址。
OSSObject ossObject = ossClient.getObject(bucketName, ossKey);//bucketName需要自己设置
// 已缓冲的方式从字符输入流中读取文本,缓冲各个字符,从而提供字符、数组和行的高效读取
//BufferedReader reader = new BufferedReader(new InputStreamReader(ossObject .getObjectContent()));
BufferedInputStream in=new BufferedInputStream(ossObject.getObjectContent());
// 缓冲文件输出流
BufferedOutputStream out=new BufferedOutputStream(response.getOutputStream());
// 通知浏览器以附件形式下载
response.setHeader("Content-Disposition","attachment;filename="+ URLEncoder.encode(fileName,"UTF-8"));
byte[] car=new byte[1024];
int L=0;
while((L=in.read(car))!=-1){
out.write(car, 0,L);
}
if(out!=null){
out.flush();
// 数据读取完成后,获取的流必须关闭,否则会造成连接泄漏,导致请求无连接可用,程序无法正常工作。
out.close();
}
if(in!=null){
in.close();
}
// 关闭OSSClient。
ossClient.shutdown();
} catch (Exception e) {
e.printStackTrace();
}
}
5、前端测试代码
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script type="text/javascript" src="js/jquery.min.js"></script>
<title></title>
</head>
<body>
<form action="#">
文件的url:<input type="text" name="url" id="url"/>
<input id="btn" type="button" value="sublimt"/>
</form>
</body>
<script >
document.getElementById('btn').onclick = function(){
var url = document.getElementById('url').value;
alert("url="+url);
location.href = 'http://localhost:8899/api/download?url=' + url ;
}
</script>
</html>
6、测试结果:测试视频是否可以下载,点击下载
下载成功 ,去本地看文件。
二、删除和下载差不多,列举主要删除的方法
/**
* 删除文件
* @param ossKey
* @param request
* @param response
* @return
*/
public String deleteFile(String ossKey, HttpServletRequest request,HttpServletResponse response){
try {
//上传图片完成会返回前端生成的url为: http://aa.xxxx.com:8080/FeedBack/xx/iOS_xxx_35671549541105750.jpg
// ossKey:上传文件时阿里云返回的标识 :FeedBack/xx/iOS_xxx_35671549541105750.jpg 这个就是文件标识
ossClient.deleteObject(bucketName, ossKey);
// 关闭OSSClient。
ossClient.shutdown();
return "success";
} catch (Exception e) {
e.printStackTrace();
return "error";
}
}
Java实现下载和删除oss图片、音频等等相关推荐
- 基于ElementUI的一个文件批量上传,下载,删除以及图片预览组件(样式篇)
一.前言 领导们的心总是难以猜测,这不,他们对于elementUI的上传组件有意见,说不能真正达到批量上传(也确实,因为elementUI的上传组件虽说可以多文件上传,但是它实际上是上传一个文件就建立 ...
- java生成图片url_Java Springboot如何基于图片生成下载链接
现有一些图片在服务器上的链接,在浏览器中打开这些链接是直接显示在浏览器页面的形式. 现在需要生成这些图片的单独下载以及打包下载链接,即在浏览器中打开下载链接后弹出下载框提示下载.由于前端存在跨域问题, ...
- java实现ftp连接、登陆、上传、下载、删除文件、获取目录、文件列表
全栈工程师开发手册 (作者:栾鹏) java教程全解 java实现ftp连接.登陆.上传.下载.删除文件.获取目录.文件列表等操作. 本地调试,首先需要在本机上开启ftp服务和ftp站点. 测试代码 ...
- java 多线程下载图片_java多线程实现下载图片并压缩
最近在做一个需求:从其他系统的ftp目录下载存储图片url的文件,然后读取文件中的url地址,根据地址下载图片后按天压缩成一个包,平均一个地址文件中包含4000个地址左右,也就是说一个文件扫描后需要下 ...
- java 批量下载图片,批量打包文件并下载
1.批量下载网页上,动态生成的图片到服务器上指定的目录中 2.将目录中的所有的图片打包成zip包 3.删除原来的目录 4.下载zip包 1:由于网页上的图片是全部都是连接动态生成的,所以同事在网上找了 ...
- 关于java下载Word文档图片显示不全的问题
关于java 从FTP下载Word文档图片显示不全的问题 最近想实现这样一个功能,从ftp服务器获取word文档下载下来,但是出现了一下问题: 本地启动的tomcat,可以下载word,图片显示正常: ...
- 使用阿里云OSS实现文件的上传、下载、删除及修改功能
一.配置OSS相关配置信息 1.要配置 OSS 相关配置信息,您可以按照以下步骤操作: 登录阿里云控制台,进入 OSS 控制台,创建一个新的 OSS Bucket,并记录下以下信息:Bucket 名称 ...
- java使用Jsch实现远程操作linux服务器进行文件上传、下载,删除和显示目录信息...
1.java使用Jsch实现远程操作linux服务器进行文件上传.下载,删除和显示目录信息. 参考链接:https://www.cnblogs.com/longyg/archive/2012/06/2 ...
- Java实现ftp的上传、下载和删除
前期准备 1. 搭建Ftp服务器 为了方便本地测试,一开始可以先在本地搭建Ftp服务器.搭建Ftp服务器的教程有很多,这里就不多讲了,下面是我用到的教程你们可以参考一下. 百度经验:Win10如何搭建 ...
最新文章
- js 获取当前时间 随记
- Java垃圾回收工作原理
- 玩玩TCPCOPY+ intercept+mysql-replay-module(未成功)
- mfc 消息消息队列概念_必看入门秘籍——解密原理:消息中间件之RabbitMQ
- vb实时错误6 溢出_java内存溢出系列(6): Out of swap space?
- Python中lambda的用法及其与def的区别解析
- oj系统 的c语言答案,宁波大学OJ系统前105道C语言题目及答案精讲
- ubuntu搜狗拼音输入法选词框乱码
- 生物信息学 之 序列比对
- levelup游戏资料库项目开发备忘录(10.26)
- HTML系列之水平线标签hr
- jquery常用方法之siblings方法
- 浅谈DOS扩展器和DPMI
- ios给按钮图片根据不同的主题更改颜色
- 贵州学计算机,在贵州省计算机学校学习计算机专业如何?
- Windows11设置登录密码
- 高一必修一 第一单元
- 刷屏器!简单!快速!稳定!可控制速度!
- Matlab学习——曲柄滑块的运动仿真
- Java服务,CPU100%问题如何快速定位?
热门文章
- 动能芯片 | DP4301—SUB-1G高集成度无线收发芯片
- [YOLOv7/YOLOv5系列改进NO.44]融入适配GPU的轻量级 G-GhostNet
- 进程控制-----操作系统
- Vector 删除元素
- 华三交换机ping不通用户但用户_用H3C模拟器做交换机实验,但是终端总是PING不通交换机,求各位高手帮忙!...
- 2020秋季C语言练习题(4)
- WM6不支持SendRequestEx,怎么上传HTTP表单?
- 【微信易信公众平台开发】天气查询功能
- 二进制补码计算——有符号数的乘法
- android+高仿iphone,网购iPhone7P的失败经历,原来是安卓高仿!