阿里云OSS图片上传

随声附和 提交于 2019-11-27 13:47:54

Maven

        <!-- 阿里云OSS对象储存 -->
        <dependency>
            <groupId>com.aliyun.oss</groupId>
            <artifactId>aliyun-sdk-oss</artifactId>
            <version>2.8.3</version>
        </dependency>

代码

package cn.tmsc.commons.upload;

import com.aliyun.oss.OSSClient;
import com.aliyun.oss.model.PutObjectRequest;
import org.apache.commons.io.FilenameUtils;
import org.springframework.web.multipart.MultipartFile;

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.net.URL;
import java.util.Date;
import java.util.UUID;

/**
 * @author XRZ
 * @date 2019-05-10
 * @Description : 阿里云OSS对象存储工具类
 */
public class OSSUtil {

    private static String endpoint = "oss-cn-shenzhen.aliyuncs.com";             //EndPoint(地域节点)
    private static String accessKeyId = "**********";                      //阿里云主账号AccessKey
    private static String accessKeySecret = "*****************";    //对应的accessKeySecret
    private static String bucketName = "*****";                               //Bucket 名称


    /**
     * 上传文件
     *
     * @param suffix 文件后缀
     * @param file 文件对象
     * @return URL 绝对路径
     */
    public static String uploadFileToOss(String suffix, MultipartFile file) throws IOException {
        // 创建OSSClient实例。
        OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
        try {
            //获取UUID 用于文件名 以确保文件名的唯一
            String uuid = UUID.randomUUID().toString().replaceAll("-", "");
            //文件名 = UUID + 后缀
            String fileName = uuid + "." +suffix;
            //上传至OSS    PutObjectRequest(Bucket名称,文件名,MultipartFile类型的文件)
            ossClient.putObject(new PutObjectRequest(bucketName,fileName,new ByteArrayInputStream(file.getBytes())));
            // 设置URL过期时间为100年,默认这里是int型,转换为long型即可
            Date expiration = new Date(new Date().getTime() + 3600l * 1000 * 24 * 365 * 100);
            // 生成URL
            URL url = ossClient.generatePresignedUrl(bucketName, fileName, expiration);
            return url.toString().split("[?]")[0]; //返回文件的绝对路径
        } finally {
            ossClient.shutdown();  //关闭OSSClient。
        }
    }


    /**
     * 删除文件
     * @param URL 绝对路径
     * @return boolean
     */
    public static boolean deleteImg(String url) {
        //提取文件名
        String[] urls =  url.split("[/]");
        String fileName = urls[urls.length-1];
        // 创建OSSClient实例。
        OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
        try{
            if(fileName.equals("user.jpg")){ //保留默认文件
                return true;
            }
            //判断文件是否存在
            if(ossClient.doesObjectExist(bucketName, fileName)){
                //删除文件
                ossClient.deleteObject(bucketName, fileName);
            }
        }finally {
            ossClient.shutdown(); //关闭OSSClient。
        }
        return true;
    }


    /**
     * 获取文件后缀
     * @param fileupload
     * @return
     */
    public static String getSuffix(MultipartFile fileupload){
        String originalFilename = fileupload.getOriginalFilename(); //获取文件名
        return FilenameUtils.getExtension(originalFilename);//获取文件名后缀
    }


}

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!