From 336b1ee18a1d1ff4230e8edb7faa43e3b5ef1ffc Mon Sep 17 00:00:00 2001 From: Junjie <fallin.jie@qq.com> Date: 星期五, 08 九月 2023 08:50:35 +0800 Subject: [PATCH] # --- src/main/java/com/zy/crm/common/service/OssService.java | 147 +++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 130 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/zy/crm/common/service/OssService.java b/src/main/java/com/zy/crm/common/service/OssService.java index f7bd76f..1472c11 100644 --- a/src/main/java/com/zy/crm/common/service/OssService.java +++ b/src/main/java/com/zy/crm/common/service/OssService.java @@ -3,6 +3,8 @@ import com.aliyun.oss.OSSClient; import com.aliyun.oss.model.OSSObject; import com.aliyun.oss.model.ObjectMetadata; +import com.aliyun.oss.model.PutObjectRequest; +import com.aliyun.oss.model.PutObjectResult; import com.core.common.SnowflakeIdWorker; import com.core.exception.CoolException; import lombok.Data; @@ -10,14 +12,19 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +import org.springframework.core.io.InputStreamResource; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.InputStream; +import java.io.*; import java.net.URL; +import java.nio.file.Path; import java.util.Date; +import java.nio.file.StandardCopyOption; +import java.nio.file.Files; +import java.nio.file.Paths; /** * 闃块噷浜慜SS鏈嶅姟绫� @@ -50,6 +57,7 @@ * 涓婁紶OSS鏂囦欢 * @return the url */ + @Deprecated public String upload(InputStream inputStream, String suffix){ if(suffix.trim().equals("file")){ suffix="jpg"; @@ -79,26 +87,131 @@ throw new CoolException("500-涓婁紶澶辫触"); } - public String upload(InputStream inputStream) { - return upload(inputStream, ".jpg"); - } - - /** - * 涓嬭浇OSS鏂囦欢 - */ - public void download(String name) { + @Deprecated + public String upload(InputStream inputStream, String suffix,String contentType){ + if(suffix.trim().equals("file")){ + suffix="jpg"; + } OSSClient ossClient = new OSSClient(OSS_ENDPOINT, accessKeyId, accessKeySecret); + String name = ""; try { - OSSObject ossObject = ossClient.getObject(bucket, name); - InputStream inputStream = ossObject.getObjectContent(); - // do transfer - inputStream.close(); - log.info("OSS鏂囦欢涓嬭浇鎴愬姛: {}", name); + if (!ossClient.doesBucketExist(bucket)) { + ossClient.createBucket(bucket); + log.info("鎮ㄧ殑Bucket涓嶅瓨鍦紝鍒涘缓Bucket锛歿}",bucket); + } + name = String.valueOf(snowflakeIdWorker.nextId()).concat(".").concat(suffix); + // 娣诲姞 ContentType + ObjectMetadata objectMetadata = new ObjectMetadata(); +// objectMetadata.setContentType("image/jpg"); + objectMetadata.setContentType(contentType); + ossClient.putObject(bucket, name, inputStream, objectMetadata); + Date expiration = new Date(new Date().getTime() + 3600L * 1000 * 24 * 365 * 100); + URL url = ossClient.generatePresignedUrl(bucket, name, expiration); + log.info("OSS鏂囦欢涓婁紶鎴愬姛: {}", name); +// return String.valueOf(url); + return "http://zhongyang-ftpserver.oss-cn-hangzhou.aliyuncs.com/"+name; } catch (Exception e){ e.printStackTrace(); } finally { ossClient.shutdown(); } + throw new CoolException("500-涓婁紶澶辫触"); + } + + @Deprecated + public String upload(InputStream inputStream) { + return upload(inputStream, ".jpg"); + } + + /** + * 鏂囦欢涓婁紶 + * @param filePath OSS璺緞 + * @param file 鏂囦欢File + */ + public boolean uploadFile(String filePath, File file) { + OSSClient ossClient = new OSSClient(OSS_ENDPOINT, accessKeyId, accessKeySecret); + // 鍒涘缓PutObjectRequest瀵硅薄銆� + PutObjectRequest putObjectRequest = new PutObjectRequest(bucket, filePath, file); + // 涓婁紶鏂囦欢銆� + PutObjectResult result = ossClient.putObject(putObjectRequest); + return true; + } + + /** + * 涓嬭浇鏂囦欢 + * @param filePath OSS璺緞 + */ + public ResponseEntity<InputStreamResource> downloadFile(String filePath) throws IOException { + OSSClient ossClient = new OSSClient(OSS_ENDPOINT, accessKeyId, accessKeySecret); + OSSObject ossObject = ossClient.getObject(bucket, filePath); + InputStream inputStream = ossObject.getObjectContent(); + + // 鍒涘缓鍝嶅簲瀹炰綋锛屽皢杈撳嚭娴佷綔涓烘枃浠跺唴瀹硅繑鍥� + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); + headers.setContentDispositionFormData("attachment", "output.docx"); + InputStreamResource resource = new InputStreamResource(convertToByteArrayInputStream(inputStream)); + return ResponseEntity.ok() + .headers(headers) + .body(resource); + } + + public static ByteArrayInputStream convertToByteArrayInputStream(InputStream inputStream) throws IOException { + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + byte[] buffer = new byte[4096]; + int bytesRead; + while ((bytesRead = inputStream.read(buffer)) != -1) { + outputStream.write(buffer, 0, bytesRead); + } + byte[] data = outputStream.toByteArray(); + return new ByteArrayInputStream(data); + } + + /** + * 涓嬭浇OSS鏂囦欢 + */ +// public void download(String name) { +// OSSClient ossClient = new OSSClient(OSS_ENDPOINT, accessKeyId, accessKeySecret); +// try { +// OSSObject ossObject = ossClient.getObject(bucket, name); +// InputStream inputStream = ossObject.getObjectContent(); +// // do transfer +// inputStream.close(); +// log.info("OSS鏂囦欢涓嬭浇鎴愬姛: {}", name); +// } catch (Exception e){ +// e.printStackTrace(); +// } finally { +// ossClient.shutdown(); +// } +// } + + @Deprecated + public String download(String name) { + OSSClient ossClient = new OSSClient(OSS_ENDPOINT, accessKeyId, accessKeySecret); + try { + OSSObject ossObject = ossClient.getObject(bucket, name); + InputStream inputStream = ossObject.getObjectContent(); + + // 鑾峰彇榛樿涓嬭浇鐩綍 + String defaultDownloadDir = System.getProperty("user.home") + "/Downloads"; + + // 鍒涘缓鏂囦欢淇濆瓨璺緞 + Path filePath = Paths.get(defaultDownloadDir, name); + + // 灏嗚緭鍏ユ祦澶嶅埗鍒版枃浠� + Files.copy(inputStream, filePath, StandardCopyOption.REPLACE_EXISTING); + + // 鍏抽棴杈撳叆娴� + inputStream.close(); + + log.info("OSS鏂囦欢涓嬭浇鎴愬姛锛屼繚瀛樿矾寰�: {}", filePath); + return ""+filePath; + } catch (Exception e) { + e.printStackTrace(); + } finally { + ossClient.shutdown(); + } + return ""; } /** -- Gitblit v1.9.1