| | |
| | | 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; |
| | |
| | | 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; |
| | | |
| | | /** |
| | | * 阿里云OSS服务类 |
| | |
| | | * 上传OSS文件 |
| | | * @return the url |
| | | */ |
| | | @Deprecated |
| | | public String upload(InputStream inputStream, String suffix){ |
| | | if(suffix.trim().equals("file")){ |
| | | suffix="jpg"; |
| | |
| | | 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 ""; |
| | | } |
| | | |
| | | /** |