直接上代码
/***
*浏览器下载oss文件
*@param fileName 文件名称
*@return: void
*@author: 小清新
*@Date: 2021/7/16 10:34
**/
@Override
public void downWebOssFile(String fileName, HttpServletResponse response) throws IOException {
// 填写Object的完整路径。Object完整路径中不能包含Bucket名称。
String objectName = fileName;
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
// ossObject包含文件所在的存储空间名称、文件名称、文件元信息以及一个输入流。
OSSObject ossObject = ossClient.getObject(bucketName, objectName);
// 读取文件内容。
System.out.println("Object content:");
int i=fileName.lastIndexOf("/");
fileName=fileName.substring(i+1);
//将流上传到网页
BufferedOutputStream out=new BufferedOutputStream(response.getOutputStream());
//通知浏览器以附件形式下载
response.setContentType("application/octet-stream;charset=ISO8859-1");
response.setHeader("Content-Disposition","attachment;filename="+ URLEncoder.encode(fileName,"utf-8"));
response.addHeader("Pargam", "no-cache");
response.addHeader("Cache-Control", "no-cache");
// 读去Object内容 返回
BufferedInputStream in=new BufferedInputStream(ossObject.getObjectContent());
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();
}