package com.zy.crm.common.service; 
 | 
  
 | 
import com.aliyun.oss.OSSClient; 
 | 
import com.aliyun.oss.model.OSSObject; 
 | 
import com.aliyun.oss.model.ObjectMetadata; 
 | 
import com.core.common.SnowflakeIdWorker; 
 | 
import com.core.exception.CoolException; 
 | 
import lombok.Data; 
 | 
import org.slf4j.Logger; 
 | 
import org.slf4j.LoggerFactory; 
 | 
import org.springframework.beans.factory.annotation.Autowired; 
 | 
import org.springframework.beans.factory.annotation.Value; 
 | 
import org.springframework.stereotype.Service; 
 | 
  
 | 
import java.io.File; 
 | 
import java.io.FileInputStream; 
 | 
import java.io.FileNotFoundException; 
 | 
import java.io.InputStream; 
 | 
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服务类 
 | 
 * Created by vincent on 2019-11-26 
 | 
 */ 
 | 
@Data 
 | 
@Service("ossService") 
 | 
public class OssService { 
 | 
  
 | 
    private static Logger log = LoggerFactory.getLogger(OssService.class); 
 | 
  
 | 
    private static final String OSS_ENDPOINT = "http://oss-cn-hangzhou.aliyuncs.com"; 
 | 
  
 | 
    @Value("${aliyun.oss.id}") 
 | 
    private String accessKeyId; 
 | 
  
 | 
    @Value("${aliyun.oss.secret}") 
 | 
    private String accessKeySecret; 
 | 
  
 | 
    @Value("${aliyun.oss.bucket}") 
 | 
    private String bucket; 
 | 
  
 | 
    @Value("${aliyun.oss.endpoint}") 
 | 
    private String endpoint; 
 | 
  
 | 
    @Autowired 
 | 
    private SnowflakeIdWorker snowflakeIdWorker; 
 | 
  
 | 
    /** 
 | 
     * 上传OSS文件 
 | 
     * @return the url 
 | 
     */ 
 | 
    public String upload(InputStream inputStream, String suffix){ 
 | 
        if(suffix.trim().equals("file")){ 
 | 
            suffix="jpg"; 
 | 
        } 
 | 
        OSSClient ossClient = new OSSClient(OSS_ENDPOINT, accessKeyId, accessKeySecret); 
 | 
        String name = ""; 
 | 
        try { 
 | 
            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"); 
 | 
            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://tjdt.oss-cn-hangzhou.aliyuncs.com/"+name; 
 | 
        } catch (Exception e){ 
 | 
            e.printStackTrace(); 
 | 
        } finally { 
 | 
            ossClient.shutdown(); 
 | 
        } 
 | 
        throw new CoolException("500-上传失败"); 
 | 
    } 
 | 
    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 { 
 | 
            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-上传失败"); 
 | 
    } 
 | 
  
 | 
    public String upload(InputStream inputStream) { 
 | 
        return upload(inputStream, ".jpg"); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 下载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(); 
 | 
//        } 
 | 
//    } 
 | 
  
 | 
    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 ""; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 删除OSS文件 
 | 
     */ 
 | 
    public boolean delete(String name) { 
 | 
        OSSClient ossClient = new OSSClient(OSS_ENDPOINT, accessKeyId, accessKeySecret); 
 | 
        try { 
 | 
            ossClient.deleteObject(bucket, name); 
 | 
        } catch (Exception e){ 
 | 
            e.printStackTrace(); 
 | 
            return false; 
 | 
        } finally { 
 | 
            ossClient.shutdown(); 
 | 
        } 
 | 
        return true; 
 | 
    } 
 | 
  
 | 
    public static void main(String[] args) { 
 | 
        File file = new File("E:\\tmp\\v2-fbbb97b977b5cebc66dc3cefab0ac981_r.jpg"); 
 | 
        try { 
 | 
            InputStream in = new FileInputStream(file); 
 | 
            OssService ossService = new OssService(); 
 | 
            ossService.setAccessKeyId("LTAI4GDzr6ioSHuRw2mk22ug"); 
 | 
            ossService.setAccessKeySecret("84CHL7tF21LbU1qpaP0jn9mIAZP9bv"); 
 | 
            ossService.setBucket("tjdt"); 
 | 
            ossService.setEndpoint("http://oss-cn-hangzhou.aliyuncs.com"); 
 | 
            ossService.setSnowflakeIdWorker(new SnowflakeIdWorker()); 
 | 
            System.out.println(ossService.upload(in)); 
 | 
  
 | 
        } catch (FileNotFoundException e) { 
 | 
            e.printStackTrace(); 
 | 
        } 
 | 
    } 
 | 
  
 | 
} 
 |