pom依赖;

yml配置:

读取配置文件类:

上传:

完整工具类代码:

点击查看代码
`import cn.hutool.core.lang.UUID;import com.aliyun.oss.OSS;import com.aliyun.oss.OSSClientBuilder;import com.aliyun.oss.model.*;import com.luzhizheng.common.config.OSSConfig;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Component;import org.springframework.web.multipart.MultipartFile;import java.io.*;import java.net.URL;import java.time.LocalDate;import java.time.format.DateTimeFormatter;import java.util.ArrayList;import java.util.Date;import java.util.List;import java.util.stream.Collectors;/** * @author Sappy * @date 4/6/2023 10:40:44 */@Componentpublic class AliYunOSSUtil {    @Autowired    private OSSConfig ossConfig;    private static String FOLDER = "文件夹";    /**     * 本地文件上传到oss     * @param file     * @return     * @throws FileNotFoundException     */    public String upload(File file) throws FileNotFoundException {        String absolutePath = file.getAbsolutePath();        String fileName = file.getName();        FileInputStream is = new FileInputStream(absolutePath);        ObjectMetadata metadata = new ObjectMetadata();        int indexOfLastDot = fileName.lastIndexOf(".");        String suffix = fileName.substring(indexOfLastDot);        metadata.setContentType(getContentType(suffix));        String uuid = UUID.randomUUID().toString().replaceAll("-", "");        fileName = uuid + suffix;        String datePath = DateTimeFormatter.ISO_DATE.format(LocalDate.now());        fileName = FOLDER + "/" + datePath + "/" + fileName;        PutObjectRequest putObjectRequest = new PutObjectRequest(ossConfig.getBucket(), fileName, is);        //设置ContentType,预览        putObjectRequest.setMetadata(metadata);        OSS ossClient = new OSSClientBuilder().build(ossConfig.getEndpoint(), ossConfig.getAccessKeyId(), ossConfig.getAccessKeySecret());        ossClient.putObject(putObjectRequest);/*        //临时第三方授权        Date expiration = new Date(System.currentTimeMillis() + 3600000L  * 24);        URL url = ossClient.generatePresignedUrl(ossConfig.getBucket(), aimFilePathName, expiration);*/        String url = "https://" + ossConfig.getBucket() + "." + ossConfig.getEndpoint() + "/" + fileName;        // 关闭ossClient        ossClient.shutdown();        return url;    }    /**     * multipartFile上传到oss     * @param multipartFile     * @return     * @throws IOException     */    public String upload(MultipartFile multipartFile) throws IOException {        InputStream inputStream = multipartFile.getInputStream();        String fileName = multipartFile.getOriginalFilename();        String uuid = UUID.randomUUID().toString().replaceAll("-", "");        fileName = uuid + fileName;        String datePath = DateTimeFormatter.ISO_DATE.format(LocalDate.now());        // 拼接fileName , 文件夹1/文件夹2/文件名.jpg        fileName = FOLDER + "/" + datePath + "/" + fileName;        // 如果需要上传时设置存储类型与访问权限        ObjectMetadata metadata = new ObjectMetadata();        int indexOfLastDot = fileName.lastIndexOf(".");        String suffix = fileName.substring(indexOfLastDot);        metadata.setContentType(getContentType(suffix));        PutObjectRequest putObjectRequest = new PutObjectRequest(ossConfig.getBucket(), fileName, inputStream);        //设置ContentType,预览        putObjectRequest.setMetadata(metadata);        OSS ossClient = new OSSClientBuilder().build(ossConfig.getEndpoint(), ossConfig.getAccessKeyId(), ossConfig.getAccessKeySecret());        ossClient.putObject(putObjectRequest);        /*        //临时第三方授权        Date expiration = new Date(System.currentTimeMillis() + 3600000L  * 24);        URL url = ossClient.generatePresignedUrl(ossConfig.getBucket(), aimFilePathName, expiration);*/        String url = "https://" + ossConfig.getBucket() + "." + ossConfig.getEndpoint() + "/" + fileName;        ossClient.shutdown();        return url;    }    private static String getContentType(String suffix) {        if (suffix.equalsIgnoreCase(".bmp")) {            return "image/bmp";        }        if (suffix.equalsIgnoreCase(".gif")) {            return "image/gif";        }        if (suffix.equalsIgnoreCase(".jpeg") ||            suffix.equalsIgnoreCase(".jpg") ||            suffix.equalsIgnoreCase(".png")        ) {            return "image/jpg";        }        return "image/jpg";    }    /**     * 列举 指定路径下所有的文件的文件名     * 如果要列出根路径下的所有文件,path= ""     *     * @param path     * @return     */    public List listFileName(String path) {        // 构造ListObjectsRequest请求。        ListObjectsRequest listObjectsRequest = new ListObjectsRequest(ossConfig.getBucket());        // 设置prefix参数来获取path目录下的所有文件。        listObjectsRequest.setPrefix(path);        OSS ossClient = new OSSClientBuilder().build(ossConfig.getEndpoint(), ossConfig.getAccessKeyId(), ossConfig.getAccessKeySecret());        // 列出文件。        ObjectListing objectListing = ossClient.listObjects(listObjectsRequest);        List objectSummaries = objectListing.getObjectSummaries();        List list = objectSummaries.stream().map(OSSObjectSummary::getKey).collect(Collectors.toList());        ossClient.shutdown();        return list;    }    /**     * 列举文件下所有的文件url信息     */    public List listFileUrl(String path) {        List res = new ArrayList();        // 构造ListObjectsRequest请求        ListObjectsRequest listObjectsRequest = new ListObjectsRequest(ossConfig.getBucket());        // 设置prefix参数来获取fun目录下的所有文件。        listObjectsRequest.setPrefix(path);        OSS ossClient = new OSSClientBuilder().build(ossConfig.getEndpoint(), ossConfig.getAccessKeyId(), ossConfig.getAccessKeySecret());        // 列出文件。        ObjectListing listing = ossClient.listObjects(listObjectsRequest);        // 遍历所有文件。        for (OSSObjectSummary objectSummary : listing.getObjectSummaries()) {            //文件访问路径            Date expiration = new Date(System.currentTimeMillis() + 3600L * 1000 * 24 * 365 * 100);            URL url = ossClient.generatePresignedUrl(ossConfig.getBucket(), objectSummary.getKey(), expiration);            res.add(url.toString());        }        // 关闭OSSClient。        ossClient.shutdown();        return res;    }    /**     * 判断文件是否存在     *     * @param objectName     * @return     */    public boolean isFileExist(String objectName) {        OSS ossClient = new OSSClientBuilder().build(ossConfig.getEndpoint(), ossConfig.getAccessKeyId(), ossConfig.getAccessKeySecret());        return ossClient.doesObjectExist(ossConfig.getBucket(), objectName);    }    /**     * 通过文件名下载文件     *     * @param ossFileName    要下载的文件名     * @param localFileName 本地要创建的文件名     */    public void downloadFile(String ossFileName, String localFileName) {        OSS ossClient = new OSSClientBuilder().build(ossConfig.getEndpoint(), ossConfig.getAccessKeyId(), ossConfig.getAccessKeySecret());        // 下载OSS文件到本地文件。如果指定的本地文件存在会覆盖,不存在则新建。        ossClient.getObject(new GetObjectRequest(ossConfig.getBucket(), ossFileName), new File(localFileName));        // 关闭OSSClient。        ossClient.shutdown();    }    /**     * 删除文件或目录     *     * @param objectName     */    public void deleteFile(String objectName) {        OSS ossClient = new OSSClientBuilder().build(ossConfig.getEndpoint(), ossConfig.getAccessKeyId(), ossConfig.getAccessKeySecret());        ossClient.deleteObject(ossConfig.getBucket(), objectName);        ossClient.shutdown();    }    /**     * 批量删除文件或目录     *     * @param keys     */    public void deleteFiles(List keys) {        OSS ossClient = new OSSClientBuilder().build(ossConfig.getEndpoint(), ossConfig.getAccessKeyId(), ossConfig.getAccessKeySecret());        // 删除文件。        DeleteObjectsResult deleteObjectsResult = ossClient.deleteObjects(new DeleteObjectsRequest(ossConfig.getBucket()).withKeys(keys));        deleteObjectsResult.getDeletedObjects();        ossClient.shutdown();    }    /**     * 创建文件夹     *     * @param folder     * @return     */    public String createFolder(String folder) {        // 文件夹名        final String keySuffixWithSlash = folder;        OSS ossClient = new OSSClientBuilder().build(ossConfig.getEndpoint(), ossConfig.getAccessKeyId(), ossConfig.getAccessKeySecret());        // 判断文件夹是否存在,不存在则创建        if (!ossClient.doesObjectExist(ossConfig.getBucket(), keySuffixWithSlash)) {            // 创建文件夹            ossClient.putObject(ossConfig.getBucket(), keySuffixWithSlash, new ByteArrayInputStream(new byte[0]));            // 得到文件夹名            OSSObject object = ossClient.getObject(ossConfig.getBucket(), keySuffixWithSlash);            String fileDir = object.getKey();            ossClient.shutdown();            return fileDir;        }        return keySuffixWithSlash;    }}

““`