欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

阿里云 OSS 对象存储简单使用【随笔】

程序员文章站 2022-05-15 14:18:14
...

Aliyun OSS 对象存储的使用

官方文档:https://help.aliyun.com/document_detail/32008.html?spm=a2c4g.11186623.6.916.57fc6d39qyXFck

准备工作

一、首先开通阿里云 OSS 对象存储,并创建 Bucket 列表

阿里云 OSS 对象存储简单使用【随笔】

二、创建完成后,点击进入 Bucket,在概览中可以看到外网访问地址 与 内网访问地址;若是本地开发测试可以使用外网地址,若是部署到服务器上的生产环境建议使用内网地址;内网地址上传速度远超外网且可以降低服务器的宽带需求。

阿里云 OSS 对象存储简单使用【随笔】

三、进入文件管理,可以添加文件上传目录的分类,如下面我根据不同格式的文件进行分类。

阿里云 OSS 对象存储简单使用【随笔】

四、权限管理页面可以设置防盗链等。

阿里云 OSS 对象存储简单使用【随笔】

五、基础设置下面的生命周期可以设置文件存储的有效期,过期后会执行删除或转换存储类型。

阿里云 OSS 对象存储简单使用【随笔】

六、传输管理下的域名管理可以将域名绑定到当前 Bucket 下,绑定后即可使用我们自己的域名访问 OSS;另外还可开启传输加速加快文件的传输速度【注意这个是需要收费的】。

阿里云 OSS 对象存储简单使用【随笔】

七、创建一个单独赋予 OSS 权限的用户。鼠标移到我们的头像上,点击 RAM 访问控制;用户 --> 创建用户;点击创建的用户并设置权限,并创建 AccessKey

阿里云 OSS 对象存储简单使用【随笔】

阿里云 OSS 对象存储简单使用【随笔】

阿里云 OSS 对象存储简单使用【随笔】

编码实现

导入 pom 依赖

<!--aliyun oss-->
<dependency>
    <groupId>com.aliyun.oss</groupId>
    <artifactId>aliyun-sdk-oss</artifactId>
    <version>3.10.2</version>
</dependency>

<!--aliyun core-->
<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-java-sdk-core</artifactId>
    <version>4.5.6</version>
</dependency>

创建 config.properties 配置文件

# 阿里云OSS用户**ID
oss.accessKeyID=前面创建的 AccessKey
# 阿里云OSS用户**
oss.accessKeySecret=前面创建的 AccessKeySecret
# 外网访问
oss.networkAccess=外网访问地址【主要用户生成上传文件的访问地址】
# 上传节点(外网)
oss.endpoint=上传节点【若是测试使用外网上传,若是生产环境使用内网上传】
# 上传节点 (内网)
#oss.endpoint=

创建 oss 工具类

import com.aliyun.oss.ClientBuilderConfiguration;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.common.comm.Protocol;
import lombok.extern.slf4j.Slf4j;

import java.io.IOException;
import java.util.Properties;

/**
 * @author akieay
 * @Date: 2020/11/19 0:30
 */
@Slf4j
public class OssConnectionUtil {

    /**
     * 阿里云OSS用户**ID
     */
    private static String accessKeyID;
    /**
     * 阿里云OSS用户**
     */
    private static String accessKeySecret;
    /**
     * 阿里云OSS外网访问节点
     */
    private static String networkAccess;
    /**
     *  OSS 上传访问节点
     */
    private static String endpoint;


    static {
        Properties prop = new Properties();
        try {
            prop.load(Object.class.getResourceAsStream("/config.properties"));
            accessKeyID = prop.getProperty("oss.accessKeyID");
            accessKeySecret = prop.getProperty("oss.accessKeySecret");
            networkAccess = prop.getProperty("oss.networkAccess");
            endpoint = prop.getProperty("oss.endpoint");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 获取OSS实例对象
     * @return
     */
    public static OSS getOssClientInstance(){
        OSS ossClient = null;
        try {
            // 创建ClientConfiguration。ClientConfiguration是OSSClient的配置类,可配置代理、连接超时、最大连接数等参数。
            ClientBuilderConfiguration conf = new ClientBuilderConfiguration();

            // 设置OSSClient允许打开的最大HTTP连接数,默认为1024个。
            conf.setMaxConnections(200);
            // 设置Socket层传输数据的超时时间,默认为50000毫秒。
            conf.setSocketTimeout(10000);
            // 设置建立连接的超时时间,默认为50000毫秒。
            conf.setConnectionTimeout(10000);
            // 设置从连接池中获取连接的超时时间(单位:毫秒),默认不超时。
            conf.setConnectionRequestTimeout(1000);
            // 设置连接空闲超时时间。超时则关闭连接,默认为60000毫秒。
            conf.setIdleConnectionTime(10000);
            // 设置失败请求重试次数,默认为3次。
            conf.setMaxErrorRetry(5);
            // 设置是否支持将自定义域名作为Endpoint,默认支持。
            conf.setSupportCname(true);
            // 设置是否开启二级域名的访问方式,默认不开启。
//        conf.setSLDEnabled(true);
            // 设置连接OSS所使用的协议(HTTP或HTTPS),默认为HTTP。
            conf.setProtocol(Protocol.HTTP);
            // 设置用户代理,指HTTP的User-Agent头,默认为aliyun-sdk-java。
//        conf.setUserAgent("aliyun-sdk-java");
            // 设置代理服务器端口。
//        conf.setProxyHost("<yourProxyHost>");
            // 设置代理服务器验证的用户名。
//        conf.setProxyUsername("<yourProxyUserName>");
            // 设置代理服务器验证的密码。
//        conf.setProxyPassword("<yourProxyPassword>");
            // 设置是否开启HTTP重定向,默认开启。
            conf.setRedirectEnable(true);
            // 设置是否开启SSL证书校验,默认开启。
            conf.setVerifySSLEnable(true);
            ossClient = new OSSClientBuilder().build(endpoint, accessKeyID, accessKeySecret, conf);

        } catch (Exception e) {
            log.error("初始化client失败!exception:" + e.getMessage());
        }

        return ossClient;
    }

    /**
     * 获取OSS外网访问域名
     * @return
     */
    public static String getOssNetworkAccess(){
        return networkAccess;
    }
}

创建 OSS 常量类

/**
 * 阿里云 oss对象存储通用常量封装
 * @author akieay
 */
public class OssConstant {

    /**
     * 创建的 Bucket 名称
     */
    public static String CLOUDPRINT_FILE_BUCKET = "cloud-test";

    /**
     * word文件存储目录
     */
    public static String WORD_DIRECTORY = "cloudprint/word/";
    /**
     * excel文件存储目录
     */
    public static String EXCEL_DIRECTORY = "cloudprint/excel/";
    /**
     * ppt文件存储目录
     */
    public static String PPT_DIRECTORY = "cloudprint/ppt/";
    /**
     * pdf文件存储目录
     */
    public static String PDF_DIRECTORY = "cloudprint/pdf/";
    /**
     * txt文件存储目录
     */
    public static String TXT_DIRECTORY = "cloudprint/txt/";
    /**
     * prn 文件存储目录
     */
    public static String PRN_DIRECTORY = "cloudprint/prn/";
    /**
     * image 文件存储目录
     */
    public static String IMAGE_DIRECTORY = "cloudprint/image/";
    /**
     * img-pdf 文件存储目录
     */
    public static String IMG_PDF_DIRECTORY = "cloudprint/img-pdf/";

    /**
     * 授权URL访问的有效期(毫秒) 默认1小时
     */
    public static Integer AUTH_URL_PERIOD_VALIDITY = 3600 * 1000;
}

创建 OSS API 工具类

import com.akieay.cloudprint.common.util.FileUtil;
import com.akieay.cloudprint.common.util.aliyun.oss.connection.OssConnectionUtil;
import com.aliyun.oss.HttpMethod;
import com.aliyun.oss.OSS;
import com.aliyun.oss.model.*;

import java.io.*;
import java.net.URL;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import static com.aliyun.oss.internal.OSSConstants.DEFAULT_OBJECT_CONTENT_TYPE;


/**
 * @author akieay
 */
public class OssManagerApi {

    public static OSS ossClient;
    static {
        ossClient = OssConnectionUtil.getOssClientInstance();
    }

    /**********************************************************存储空间管理************************************/


    /**
     * 创建存储空间
     * @param bucketName 存储空间名称
     */
    public static void createBucket(String bucketName){
        // 创建CreateBucketRequest对象。
        CreateBucketRequest createBucketRequest = new CreateBucketRequest(bucketName);

        // 如果创建存储空间的同时需要指定存储类型以及数据容灾类型, 可以参考以下代码。
        // 此处以设置存储空间的存储类型为标准存储为例。
        // createBucketRequest.setStorageClass(StorageClass.Standard);
        // 默认情况下,数据容灾类型为本地冗余存储,即DataRedundancyType.LRS。如果需要设置数据容灾类型为同城冗余存储,请替换为DataRedundancyType.ZRS。
        // createBucketRequest.setDataRedundancyType(DataRedundancyType.ZRS)

        // 创建存储空间。
        ossClient.createBucket(createBucketRequest);
    }

    /**
     * 列举所有存储空间
     * @return
     */
    public static List<Bucket> listBuckets(){
        // 列举存储空间。
        return ossClient.listBuckets();
    }

    /**
     * 判断存储空间是否存在
     * @param bucketName 存储空间名称
     * @return
     */
    public static boolean bucketExists(String bucketName){
        return ossClient.doesBucketExist(bucketName);
    }

    /**
     * 删除存储空间
     * @param bucketName 存储空间名称
     */
    public static void removeBucket(String bucketName){
        ossClient.deleteBucket(bucketName);
    }




    /******************************************************上传文件到指定的存储空间(bucketName)并将其保存为指定的文件名称(fileName)。************/

    /**
     * 简单上传-流式上传-【上传字符串】
     * 上传文件到OSS时需要指定包含文件后缀在内的完整路径,例如abc/efg/123.jpg。
     * @param bucketName 存储空间名称
     * @param objectName  文件名称【全路径】
     * @param content  文件内容[String格式]
     */
    public static void simplyUploadString(String bucketName, String objectName, String content){
        simplyUploadByteArray(bucketName, objectName, content.getBytes());
    }

    /**
     * 简单上传-流式上传-【上传byte数组】
     * @param bucketName 存储空间名称
     * @param objectName  文件名称【全路径】
     * @param content  文件内容[byte数组]
     */
    public static void simplyUploadByteArray(String bucketName, String objectName, byte[] content){
        PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, new ByteArrayInputStream(content));
//        如果需要上传时设置存储类型与访问权限,请参考以下示例代码。
//        ObjectMetadata metadata = new ObjectMetadata();
//        metadata.setHeader(OSSHeaders.OSS_STORAGE_CLASS, StorageClass.Standard.toString());
//        metadata.setObjectAcl(CannedAccessControlList.Private);
//        putObjectRequest.setMetadata(metadata);
        ossClient.putObject(putObjectRequest);
    }

    /**
     * 简单上传-流式上传-【上传网络流】
     * @param bucketName 存储空间名称
     * @param objectName  文件名称【全路径】
     * @param url  网络文件url路径
     */
    public static void simplyUploadFlowNetwork(String bucketName, String objectName, String url) throws Exception {
        InputStream inputStream = new URL(url).openStream();
        ossClient.putObject(bucketName, objectName, inputStream);
    }

    /**
     * 简单上传-流式上传-【上传文件流】
     * @param bucketName 存储空间名称
     * @param objectName  文件名称【全路径】
     * @param file 需要上传的文件对象
     */
    public static void simplyUploadFile(String bucketName, String objectName, File file) throws FileNotFoundException {
        InputStream inputStream = new FileInputStream(file);
        ossClient.putObject(bucketName, objectName, inputStream);
    }

    /**
     * 简单上传-文件上传
     * @param bucketName 存储空间名称
     * @param objectName  文件名称【全路径】
     * @param filePath 本地文件路径
     */
    public static void simplyUploadFile(String bucketName, String objectName, String filePath){
        Map<String, String> tags = new HashMap<String, String>();
        tags.put("tag", "cloudprint");
        // 在HTTP header中设置标签信息。
        ObjectMetadata metadata = new ObjectMetadata();
        metadata.setObjectTagging(tags);

        // 创建PutObjectRequest对象。
        PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, new File(filePath), metadata);
        ossClient.putObject(putObjectRequest);
    }

    /**
     * 简单上传-文件上传【存在回调函数】
     * @param bucketName 存储空间名称
     * @param objectName  文件名称【全路径】
     * @param filePath 本地文件路径
     * @param callback 回调对象
     */
    public static void simplyUploadFile(String bucketName, String objectName, String filePath, Callback callback){
        Map<String, String> tags = new HashMap<String, String>();
        tags.put("tag", "cloudprint");
        // 在HTTP header中设置标签信息。
        ObjectMetadata metadata = new ObjectMetadata();
        metadata.setObjectTagging(tags);
        // 创建PutObjectRequest对象。
        PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, new File(filePath), metadata);
        if(null != callback){
            putObjectRequest.setCallback(callback);
        }
        ossClient.putObject(putObjectRequest);
    }

    /**
     * 追加上传文件
     * @param bucketName 存储空间名称
     * @param objectName  文件名称【全路径】
     * @param file 文件对象
     * @param position  文件追加位置 第一次为0
     * @return 下一次需要追加的文件的开始位置
     */
    public static long additionalUploadFile(String bucketName, String objectName, File file, long position) {
        AppendObjectRequest appendObjectRequest = new AppendObjectRequest(bucketName, objectName, file);
        // 设置文件的追加位置。
        appendObjectRequest.setPosition(position);
        AppendObjectResult appendObjectResult = ossClient.appendObject(appendObjectRequest);
        return appendObjectResult.getNextPosition();
    }

    /**
     *  使用签名URL临时授权文件上传
     * @param bucketName 存储空间名称
     * @param objectName 文件名称【全路径】
     * @return 授权URL 字符串
     */
    public static String getSignatureUrl(String bucketName, String objectName) {
        GeneratePresignedUrlRequest request = new GeneratePresignedUrlRequest(bucketName, objectName, HttpMethod.PUT);
        // 设置URL过期时间为1小时。
        Date expiration = new Date(System.currentTimeMillis() + 3600 * 1000);
        request.setExpiration(expiration);
        // 设置ContentType。
        request.setContentType(DEFAULT_OBJECT_CONTENT_TYPE);
        // 设置自定义元信息。
        request.addUserMetadata("token", "file_upload");
        // 生成签名URL。
        URL signedUrl = ossClient.generatePresignedUrl(request);
        return signedUrl.toString();
//        URL sto = new URL(signedUrl.toString());
//        System.out.println("上传签名URL: "+signedUrl.toString());
//
//        Map<String, String> requestHeaders = new HashMap<String, String>();
//        requestHeaders.put(HttpHeaders.CONTENT_TYPE, DEFAULT_OBJECT_CONTENT_TYPE);
//        requestHeaders.put(OSS_USER_METADATA_PREFIX + "token", "file_upload");
//        // 使用签名URL上传文件。
//        ossClient.putObject(sto, new ByteArrayInputStream("Hello OSS LLL".getBytes()), -1, requestHeaders, true);
//        // 关闭OSSClient。
//        ossClient.shutdown();
    }



    /********************************************下载文件;从OSS下载文件时需要指定包含文件后缀在内的完整路径,例如abc/efg/123.jpg******************/


    /**
     * 下载到本地文件
     * @param bucketName 存储空间名称
     * @param objectName  需要下载的文件名称 【全路径】
     * @param localFile  下载后保存到本地的文件名称【全路径】
     */
    public static void downloadLocalFile(String bucketName, String objectName, String localFile) {
        // 下载OSS文件到本地文件。如果指定的本地文件存在会覆盖,不存在则新建。
        ossClient.getObject(new GetObjectRequest(bucketName, objectName), new File(localFile));
    }

    /**
     * 下载文件;从OSS下载文件时需要指定包含文件后缀在内的完整路径,例如abc/efg/123.jpg
     * @param bucketName 存储空间名称
     * @param fileName  需要下载的文件名称 【全路径】
     * @param localFile  下载后保存到本地的文件名称【全路径】
     */
    public static File downloadFile(String bucketName, String fileName, String localFile) {
        // 调用ossClient.getObject返回一个OSSObject实例,该实例包含文件内容及文件元信息。
        OSSObject ossObject = ossClient.getObject(bucketName, fileName);
        // 调用ossObject.getObjectContent获取文件输入流,可读取此输入流获取其内容。
        InputStream content = null;
        try {
            content = ossObject.getObjectContent();
            if (null != content) {
                File file = new File(localFile);
                FileUtil.inputStreamToFile(content, file);
                return file;
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (null != content) {
                    content.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return null;
    }


    /*******************************************管理文件***************************************************************/

    /**
     * 判断文件是否存在
     * @param bucketName 存储空间名称
     * @param objectName 文件名称
     * @return
     */
    public static boolean fileExists(String bucketName, String objectName){
       return ossClient.doesObjectExist(bucketName, objectName);
    }

    /**
     * 删除文件
     * @param bucketName 存储空间名称
     * @param objectName 文件名称
     */
    public static void removeFile(String bucketName, String objectName){
        ossClient.deleteObject(bucketName, objectName);
    }



    /************************************************************************************************/

    /**
     * 获取上传文件的访问url【默认存储空间】
     * @param filePath
     * @return
     */
    public static String getDefaultUploadFileUrl(String filePath){
        return OssConnectionUtil.getOssNetworkAccess()+"/"+filePath;
    }

}

创建 OSS 业务处理类,注意业务处理类按自己的需求编写

import com.akieay.cloudprint.common.util.aliyun.oss.api.OssManagerApi;
import com.akieay.cloudprint.common.util.aliyun.oss.constant.OssConstant;

/**
 * @author akieay
 */
public class OssService {

    /**
     * 上传本地word源文件到 阿里云
     * @param fileName 保存到阿里云的文件名称
     * @param sourceFile  本地源文件全路径
     * @return String 文件在阿里云上的存储目录
     */
    public static String uploadLocalWordFile(String fileName, String sourceFile){
        String objectName = OssConstant.WORD_DIRECTORY + fileName;
        OssManagerApi.simplyUploadFile(OssConstant.CLOUDPRINT_FILE_BUCKET, objectName, sourceFile);
        return OssManagerApi.getDefaultUploadFileUrl(objectName);
    }

    /**
     * 上传本地excel源文件到 阿里云
     * @param fileName 保存到阿里云的文件名称
     * @param sourceFile  本地源文件全路径
     * @return String 文件在阿里云上的存储目录
     */
    public static String uploadLocalExcelFile(String fileName, String sourceFile){
        String objectName = OssConstant.EXCEL_DIRECTORY + fileName;
        OssManagerApi.simplyUploadFile(OssConstant.CLOUDPRINT_FILE_BUCKET, objectName, sourceFile);
        return OssManagerApi.getDefaultUploadFileUrl(objectName);
    }

    /**
     * 上传本地ppt源文件到 阿里云
     * @param fileName 保存到阿里云的文件名称
     * @param sourceFile  本地源文件全路径
     * @return String 文件在阿里云上的存储目录
     */
    public static String uploadLocalPptFile(String fileName, String sourceFile){
        String objectName = OssConstant.PPT_DIRECTORY + fileName;
        OssManagerApi.simplyUploadFile(OssConstant.CLOUDPRINT_FILE_BUCKET, objectName, sourceFile);
        return OssManagerApi.getDefaultUploadFileUrl(objectName);
    }

    /**
     * 上传本地pdf源文件到 阿里云
     * @param fileName 保存到阿里云的文件名称
     * @param sourceFile  本地源文件全路径
     * @return String 文件在阿里云上的存储目录
     */
    public static String uploadLocalPdfFile(String fileName, String sourceFile){
        String objectName = OssConstant.PDF_DIRECTORY + fileName;
        OssManagerApi.simplyUploadFile(OssConstant.CLOUDPRINT_FILE_BUCKET, objectName, sourceFile);
        return OssManagerApi.getDefaultUploadFileUrl(objectName);
    }

    /**
     * 上传本地txt源文件到 阿里云
     * @param fileName 保存到阿里云的文件名称
     * @param sourceFile  本地源文件全路径
     * @return String 文件在阿里云上的存储目录
     */
    public static String uploadLocalTxtFile(String fileName, String sourceFile){
        String objectName = OssConstant.TXT_DIRECTORY + fileName;
        OssManagerApi.simplyUploadFile(OssConstant.CLOUDPRINT_FILE_BUCKET, objectName, sourceFile);
        return OssManagerApi.getDefaultUploadFileUrl(objectName);
    }

    /**
     * 上传本地文件到 阿里云
     * @param fileName 保存到阿里云的文件名称
     * @param sourceFile 本地源文件全路径
     * @param type 文件后缀名
     * @return 文件在阿里云上的存储目录
     */
    public static String uploadLocalFile(String fileName, String sourceFile, String type){
        switch (type){
            case ".doc":
            case ".docx":
                return uploadLocalWordFile(fileName, sourceFile);
            case ".xls":
            case ".xlsx":
                return uploadLocalExcelFile(fileName, sourceFile);
            case ".ppt":
            case ".pptx":
                return uploadLocalPptFile(fileName, sourceFile);
            case ".pdf":
                return uploadLocalPdfFile(fileName, sourceFile);
            case ".txt":
                return uploadLocalTxtFile(fileName, sourceFile);
            case ".jpg":
                return uploadLocalImageFile(fileName, sourceFile);
            default:
                return null;
        }
    }


    /**
     * 上传本地prn源文件到 阿里云
     * @param fileName 保存到阿里云的文件名称
     * @param sourceFile  本地源文件全路径
     * @return String 文件在阿里云上的存储目录
     */
    public static String uploadLocalPrnFile(String fileName, String sourceFile){
        String objectName = OssConstant.PRN_DIRECTORY + fileName;
        OssManagerApi.simplyUploadFile(OssConstant.CLOUDPRINT_FILE_BUCKET, objectName, sourceFile);
        return OssManagerApi.getDefaultUploadFileUrl(objectName);
    }

    /**
     * 上传本地image源文件到 阿里云
     * @param fileName 保存到阿里云的文件名称
     * @param sourceFile  本地源文件全路径
     * @return String 文件在阿里云上的存储目录
     */
    public static String uploadLocalImageFile(String fileName, String sourceFile){
        String objectName = OssConstant.IMAGE_DIRECTORY + fileName;
        OssManagerApi.simplyUploadFile(OssConstant.CLOUDPRINT_FILE_BUCKET, objectName, sourceFile);
        return OssManagerApi.getDefaultUploadFileUrl(objectName);
    }

    /**
     * 上传本地image的pdf文件源文件到 阿里云
     * @param fileName 保存到阿里云的文件名称
     * @param sourceFile  本地源文件全路径
     * @return String 文件在阿里云上的存储目录
     */
    public static String uploadLocalImgPdfFile(String fileName, String sourceFile){
        String objectName = OssConstant.IMG_PDF_DIRECTORY + fileName;
        OssManagerApi.simplyUploadFile(OssConstant.CLOUDPRINT_FILE_BUCKET, objectName, sourceFile);
        return OssManagerApi.getDefaultUploadFileUrl(objectName);
    }


    /**
     * 获取image文件上传临时授权的 url
     * @param fileName image文件名称
     * @return image 临时授权的url
     */
    public static String getImageSignatureUrl(String fileName){
        String objectName = OssConstant.IMAGE_DIRECTORY + fileName;
        return OssManagerApi.getSignatureUrl(OssConstant.CLOUDPRINT_FILE_BUCKET, objectName);
    }






    /**
     * 删除 image 文件存储目录 的指定名称的文件
     * @param fileName 文件名称
     */
    public static void removeImageFile(String fileName){
        OssManagerApi.removeFile(OssConstant.CLOUDPRINT_FILE_BUCKET, OssConstant.IMAGE_DIRECTORY + fileName);
    }

    /**
     * 获取文件在 aliyun 的访问目录url
     * @param fileName 文件名
     * @param fileName 文件存储目录
     * @return 阿里云访问url
     */
    public static String getPrnFileUrl(String fileName, String fileDir){
        String objectName = fileDir + fileName;
        return OssManagerApi.getDefaultUploadFileUrl(objectName);
    }
}

测试 OSS 上传

import com.akieay.cloudprint.common.util.aliyun.oss.OssService;

public class Test {

    public static void main(String[] args) throws Exception {

        String url = OssService.uploadLocalPdfFile("tes-tword-upload.pdf", "C:\\Users\\admin\\Desktop\\pdf\\tes-tword-upload.pdf");
        System.out.println(url);

    }
}

调用上传后,即可在 OSS 文件目录下查看上传的文件

阿里云 OSS 对象存储简单使用【随笔】

相关标签: 阿里云