案例管理的文件下载
This commit is contained in:
		| @@ -3,17 +3,28 @@ package com.stdiet.common.utils.oss; | ||||
| import com.aliyun.oss.model.GetObjectRequest; | ||||
| import com.aliyun.oss.model.OSSObject; | ||||
| import com.stdiet.common.config.AliyunOSSConfig; | ||||
| import com.stdiet.common.utils.file.FileUtils; | ||||
| import org.springframework.web.multipart.MultipartFile; | ||||
|  | ||||
| import com.aliyun.oss.OSS; | ||||
| import com.aliyun.oss.OSSClientBuilder; | ||||
|  | ||||
| import javax.servlet.http.HttpServletRequest; | ||||
| import javax.servlet.http.HttpServletResponse; | ||||
| import java.io.File; | ||||
| import java.io.FileInputStream; | ||||
| import java.io.IOException; | ||||
| import java.io.InputStream; | ||||
| import java.net.URL; | ||||
| import java.util.ArrayList; | ||||
| import java.util.Date; | ||||
| import java.util.List; | ||||
| import java.util.UUID; | ||||
|  | ||||
| public class AliyunOSSUtils { ; | ||||
| public class AliyunOSSUtils { | ||||
|  | ||||
|     //下载链接默认有效期 | ||||
|     private static final Long expire = 3600L * 1000 * 24; | ||||
|  | ||||
|     public static OSS getOssClient() { | ||||
|         return new OSSClientBuilder().build(AliyunOSSConfig.EndPoint, AliyunOSSConfig.AccessKeyID, AliyunOSSConfig.AccessKeySecret); | ||||
| @@ -63,10 +74,10 @@ public class AliyunOSSUtils { ; | ||||
|             //去尾 | ||||
|             String tail = oranName.substring(cutPoint); | ||||
|             //返回正确的带路径的图片名称 | ||||
|             return prefix + head + uuid + tail; | ||||
|             return prefix + head + uuid + "_" + tail; | ||||
|         } | ||||
|         //不存在 直接返回 | ||||
|         return prefix + uuid + oranName; | ||||
|         return prefix + uuid + "_" + oranName; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -86,8 +97,8 @@ public class AliyunOSSUtils { ; | ||||
|             String prefix = originalFilename.substring(0,cutPoint); | ||||
|             //获取后缀名 | ||||
|             String suffix = originalFilename.substring(cutPoint + 1); | ||||
|             //创建临时文件 | ||||
|             file = File.createTempFile(prefix, suffix); | ||||
|             //创建临时文件,prefix最少三位 | ||||
|             file = File.createTempFile((prefix != null && prefix.length() >= 3 ? prefix : prefix+"ab"), suffix); | ||||
|             //multipartFile2file | ||||
|             multipartFile.transferTo(file); | ||||
|             //删除临时文件 | ||||
| @@ -194,7 +205,7 @@ public class AliyunOSSUtils { ; | ||||
|      * | ||||
|      * @param fileURL       文件的url | ||||
|      */ | ||||
|     public static InputStream downloadFile(String fileURL) throws IOException { | ||||
|     public static void downloadFile(String fileURL, String fileName, HttpServletRequest request, HttpServletResponse response) throws IOException { | ||||
|  | ||||
|         //将url解析成objectName | ||||
|         String objectName = getObjectName(fileURL); | ||||
| @@ -207,10 +218,57 @@ public class AliyunOSSUtils { ; | ||||
|         //获取流 | ||||
|         InputStream streamData = ossObject.getObjectContent(); | ||||
|  | ||||
|         response.setCharacterEncoding("utf-8"); | ||||
|         response.setContentType("multipart/form-data"); | ||||
|         response.setHeader("Content-Disposition", | ||||
|                 "attachment;fileName=" + FileUtils.setFileDownloadHeader(request, fileName)); | ||||
|         FileUtils.writeBytes(streamData , response.getOutputStream()); | ||||
|  | ||||
|         // 关闭OSSClient。 | ||||
|         ossClient.shutdown(); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * | ||||
|      * @param fileUrl | ||||
|      * @return | ||||
|      */ | ||||
|     public static String generatePresignedUrl(String fileUrl){ | ||||
|         // 创建OSSClient实例。 | ||||
|         OSS ossClient = getOssClient(); | ||||
|  | ||||
|         Date expiration = new Date(System.currentTimeMillis() + expire); | ||||
|  | ||||
|         String url = ossClient.generatePresignedUrl(AliyunOSSConfig.Buckets, getObjectName(fileUrl), expiration).toString(); | ||||
|  | ||||
|         // 关闭OSSClient。 | ||||
|         ossClient.shutdown(); | ||||
|  | ||||
|         return streamData; | ||||
|         return url; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * | ||||
|      * @param fileUrl | ||||
|      * @return | ||||
|      */ | ||||
|     public static List<String> generatePresignedUrl(List<String> fileUrlList){ | ||||
|         List<String> downUrlList = new ArrayList<>(); | ||||
|  | ||||
|         // 创建OSSClient实例。 | ||||
|         OSS ossClient = getOssClient(); | ||||
|  | ||||
|         Date expiration = new Date(System.currentTimeMillis() + expire); | ||||
|  | ||||
|         for (String fileUrl : fileUrlList) { | ||||
|             String url = ossClient.generatePresignedUrl(AliyunOSSConfig.Buckets, getObjectName(fileUrl), expiration).toString(); | ||||
|             downUrlList.add(url); | ||||
|         } | ||||
|  | ||||
|         // 关闭OSSClient。 | ||||
|         ossClient.shutdown(); | ||||
|  | ||||
|         return downUrlList; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|   | ||||
		Reference in New Issue
	
	Block a user