(Herramientas OSS) Utilice Alibaba Cloud OSS Object Storage para completar el almacenamiento de archivos y devolver la URL. También puede utilizar el nombre del archivo para consultar los recursos estáticos correspondientes

Más detalles pueden referirse al almacenamiento de objetos de documentos oficiales de Ali Cloud OSS Almacenamiento de objetos de documentos oficiales de Ali Cloud OSS
1. Importar las coordenadas de Maven Ali Cloud OSS puede consultar la documentación oficial

		<!--阿里云SDK-->
        <dependency>
            <groupId>com.aliyun.oss</groupId>
            <artifactId>aliyun-sdk-oss</artifactId>
            <version>3.8.0</version>
        </dependency>
package com.search.config;

import com.aliyun.oss.ClientBuilderConfiguration;
import com.aliyun.oss.OSSClient;
import com.aliyun.oss.common.auth.CredentialsProvider;
import com.aliyun.oss.common.auth.DefaultCredentialProvider;
import com.aliyun.oss.model.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

//阿里云OSS对象存储工具类
@Slf4j
@Component
public class OSSClientUtil {
    
    
    //阿里云OSS API的内或外网域名
	//@Value(value = "${oss.end-point}")
	//这里推荐使用自定义域名来作为前缀 也可以使用公网或者内网来使用
    private String endPoint="http://static.*********.com";
    //阿里云OSS API的密钥Access Key ID  
	//@Value(value = "${oss.access-key-id}")
    private String accessKeyId="***********";
    //阿里云OSS API的密钥Access Key Secret  
	//@Value(value = "${oss.sccess-key-secret}")
    private String sccessKeySecret="*********************";
    //阿里云OSS API的bucket名称  
	//@Value(value = "${oss.bucket-name}")
    private String bucketName="xinchacha";
    //阿里云OSS 上传文件夹
	//@Value("aliyun.oss.imageFolder")
    private String imageFolder;

    private CredentialsProvider credentialsProvider;

    private final long IMAGE_EXPIRE_TIME = 60 * 60 * 1000L;//图片访问链接的过期时间

    private OSSClient ossClient;

    public OSSClientUtil() {
    
    
        ClientBuilderConfiguration conf = new ClientBuilderConfiguration();
        //这里是使用自定义域名来进行访问 详细的可以参考阿里云OSS官方文档
        conf.setSupportCname(true);
        ossClient = new OSSClient(endPoint, accessKeyId, sccessKeySecret,conf);
    }

    public void setConfigInfo() {
    
    
        credentialsProvider = new DefaultCredentialProvider(accessKeyId, sccessKeySecret);
    }

    /**
     * 初始化
     */
    public void init() {
    
    
        ossClient = new OSSClient(endPoint, accessKeyId, sccessKeySecret);
    }

    /**
     * 销毁
     */
    public void destory() {
    
    
        ossClient.shutdown();
    }

    /**
     * @param: instream
     * @param: fileName
     * @Return: java.lang.String
     * @Decription: 上传图片至OSS
     * @CreateDate: Created in 2018/12/11 16:36
     * @Modify:
     */
    public String uploadImageToOSS(MultipartFile file,String code) {
    
    
        if (code.equals("1")){
    
    
            imageFolder="bossImage/"; //老板相关
        }else if (code.equals("2")){
    
    
            imageFolder="companyLogo/"; //公司相关
        }else if (code.equals("3")){
    
    
            imageFolder="userImage/"; // 用户相关
        }else if (code.equals("4")){
    
    
            imageFolder="deadbeatImage/"; //老赖相关
        }else if (code.equals("5")){
    
    
            imageFolder="knowledgeImage/"; // 知识产权相关
        }
        if (ossClient == null) {
    
    
            init();
        }

        String imageUrl = "";
        try {
    
    
            //创建上传Object的Metadata
            ObjectMetadata objectMetadata = new ObjectMetadata();
            objectMetadata.setContentLength(file.getInputStream().available());
//            System.out.println(file.getInputStream());
            objectMetadata.setCacheControl("no-cache");
            objectMetadata.setHeader("Pragma", "no-cache");
            objectMetadata.setContentType(getcontentType(file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."))));
            objectMetadata.setContentDisposition("inline;filename=" + file.getOriginalFilename());
            //上传文件
            if (ossClient.doesBucketExist(bucketName)) {
    
    
                System.out.println("您已经创建Bucket:" + bucketName + "。");
            } else {
    
    
                System.out.println("您的Bucket不存在,创建Bucket:" + bucketName + "。");
                // 创建Bucket。详细请参看“SDK手册 > Java-SDK > 管理Bucket”。
                // 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_bucket.html?spm=5176.docoss/sdk/java-sdk/init
                ossClient.createBucket(bucketName);
            }

            System.out.println(file.getOriginalFilename());
            PutObjectResult putResult = ossClient.putObject(bucketName, imageFolder + file.getOriginalFilename(), file.getInputStream(), objectMetadata);

            imageUrl = this.getImageUrl(file.getOriginalFilename(),code);
            System.out.println(imageUrl);

        } catch (IOException e) {
    
    
            log.error("upload file to oss error name={}", file.getOriginalFilename(), e);
        } finally {
    
    
            try {
    
    
                if (file.getInputStream() != null) {
    
    
                    file.getInputStream().close();
                }
            } catch (Exception e) {
    
    
                e.printStackTrace();
            }
        }

        return imageUrl;
    }

    /**
     * @param: FilenameExtension
     * @Return: java.lang.String
     * @Decription: 判断OSS服务文件上传时文件的contentType
     * @CreateDate: Created in 2018/12/11 17:19
     * @Modify:
     */
    private String getcontentType(String FilenameExtension) {
    
    
        if (FilenameExtension.equalsIgnoreCase(".bmp")) {
    
    
            return "image/bmp";
        }
        if (FilenameExtension.equalsIgnoreCase(".gif")) {
    
    
            return "image/gif";
        }
        if (FilenameExtension.equalsIgnoreCase(".jpeg") ||
                FilenameExtension.equalsIgnoreCase(".jpg") ||
                FilenameExtension.equalsIgnoreCase(".png")) {
    
    
            return "image/jpg";
        }
        if (FilenameExtension.equalsIgnoreCase(".html")) {
    
    
            return "text/html";
        }
        if (FilenameExtension.equalsIgnoreCase(".txt")) {
    
    
            return "text/plain";
        }
        if (FilenameExtension.equalsIgnoreCase(".vsd")) {
    
    
            return "application/vnd.visio";
        }
        if (FilenameExtension.equalsIgnoreCase(".pptx") ||
                FilenameExtension.equalsIgnoreCase(".ppt")) {
    
    
            return "application/vnd.ms-powerpoint";
        }
        if (FilenameExtension.equalsIgnoreCase(".docx") ||
                FilenameExtension.equalsIgnoreCase(".doc")) {
    
    
            return "application/msword";
        }
        if (FilenameExtension.equalsIgnoreCase(".xml")) {
    
    
            return "text/xml";
        }
        return "image/jpg";
    }

    /**
     * @param: fileName
     * @Return: java.lang.String
     * @Decription: 根据图片名称获取图片访问地址
     * @CreateDate: Created in 2018/12/11 17:18
     * @Modify:
     */
    public String getImageUrl(String fileName,String code) {
    
    
        if (code.equals("1")){
    
    
            imageFolder="bossImage/"; //
        }else if (code.equals("2")){
    
    
            imageFolder="companyLogo/"; //
        }else if (code.equals("3")){
    
    
            imageFolder="userImage/"; //
        }else if (code.equals("4")){
    
    
            imageFolder="deadbeatImage/"; 
        }else if (code.equals("5")){
    
    
            imageFolder="knowledgeImage/"; //
        }
        URL url;
        // 设置URL过期时间
        Date expiration = new Date(new Date().getTime() + IMAGE_EXPIRE_TIME);
        // 生成URL
        url = ossClient.generatePresignedUrl(bucketName, imageFolder + fileName, expiration);
        //判断URL是否存在  如果不存在则设置为默认

        boolean flag = ossClient.doesObjectExist(bucketName, imageFolder + fileName);
//        System.out.println(found);
        if (flag) {
    
    
            return url.toString();
        } else {
    
    
//            url = ossClient.generatePresignedUrl(bucketName, imageFolder + "xinchacha.jpg", expiration);
            return null;
        }
    }
    public void copy(String fileName,String newFileName){
    
    
        CopyObjectResult result = ossClient.copyObject("xinchacha", "testImg/"+fileName, "xinchacha", "companyLogo/"+newFileName);
        System.out.println("ETag: " + result.getETag() + " LastModified: " + result.getLastModified());

// 关闭OSSClient。
//        ossClient.shutdown();
    }
    public List<String> uploadPdf(String KeyPrefix){
    
    
        ObjectListing objectListing = ossClient.listObjects(bucketName, KeyPrefix);
        List list=new ArrayList();
        List<OSSObjectSummary> sums = objectListing.getObjectSummaries();
        for (OSSObjectSummary s : sums) {
    
    
            String x=s.getKey().substring(s.getBucketName().length()+1,s.getKey().length());
            System.out.println(x);
            System.out.println("\t" + s.getKey());
            list.add(x);

        }
        return list;
    }
}

Supongo que te gusta

Origin blog.csdn.net/qq_43565087/article/details/107630166
Recomendado
Clasificación