上传图片到阿里云OSS并在页面预览

对象存储OSS
海量、安全、低成本、高可靠的云存储服务,提供99.9999999999%(12个9)的数据持久性。使用RESTful API 可以在互联网任何位置存储和访问,容量和处理能力弹性扩展,多种存储类型供选择全面优化存储成本。

第一步: 导入依赖

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

第二步: 编写代码

public class HelloOSS {
    
    

    // endpoint是访问OSS的域名。如果您已经在OSS的控制台上 创建了Bucket,请在控制台上查看域名。
    // 如果您还没有创建Bucket,endpoint选择请参看文档中心的“开发人员指南 > 基本概念 > 访问域名”,
    // 链接地址是:https://help.aliyun.com/document_detail/oss/user_guide/oss_concept/endpoint.html?spm=5176.docoss/user_guide/endpoint_region
    // endpoint的格式形如“http://oss-cn-hangzhou.aliyuncs.com/”,注意http://后不带bucket名称,
    // 比如“http://bucket-name.oss-cn-hangzhou.aliyuncs.com”,是错误的endpoint,请去掉其中的“bucket-name”。
    // private static String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
    private static final String endpoint = "http://oss-cn-beijing.aliyuncs.com";

    // accessKeyId和accessKeySecret是OSS的访问密钥,您可以在控制台上创建和查看,
    // 创建和查看访问密钥的链接地址是:https://ak-console.aliyun.com/#/。
    // 注意:accessKeyId和accessKeySecret前后都没有空格,从控制台复制时请检查并去除多余的空格。
    private static final String accessKeyId = "你自己的accessKeyId";
    private static final String accessKeySecret = "你自己的accessKeySecret";

    // Bucket用来管理所存储Object的存储空间,详细描述请参看“开发人员指南 > 基本概念 > OSS基本概念介绍”。
    // Bucket命名规范如下:只能包括小写字母,数字和短横线(-),必须以小写字母或者数字开头,长度必须在3-63字节之间。
    private static final String bucketName = "你自己的bucketName";

    // Object是OSS存储数据的基本单元,称为OSS的对象,也被称为OSS的文件。详细描述请参看“开发人员指南 > 基本概念 > OSS基本概念介绍”。
    // Object命名规范如下:使用UTF-8编码,长度必须在1-1023字节之间,不能以“/”或者“\”字符开头。
    private static final String firstKey = "firstKey ";

    public static void main(String[] args) {
    
    
        // 生成OSSClient,您可以指定一些参数,详见“SDK手册 > Java-SDK > 初始化”,
        // 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/init.html?spm=5176.docoss/sdk/java-sdk/get-start
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
        try {
    
    
            // 判断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
            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);
            }
            // 上传图片 部分
            // 使用 ObjectMetadata 对象设置ContentType
            ObjectMetadata omd = new ObjectMetadata();
            omd.setContentType("image/png");
            // 获取文件输出流
            FileInputStream inputStream = new FileInputStream("E:\\Desktop\\1.png");
            // 将文件写入bucket中
            ossClient.putObject(bucketName, firstKey, inputStream, omd);
            // 关闭输入流
            inputStream.close();
            // 获取图片的链接
            GeneratePresignedUrlRequest urlRequest =
                    new GeneratePresignedUrlRequest(bucketName, firstKey, HttpMethod.GET);
            // 设置链接过期时间
            Date date = new Date(System.currentTimeMillis() + (long) (Math.pow(10, 10)));
            urlRequest.setExpiration(date);
            // 获取图片链接
            URL url = ossClient.generatePresignedUrl(urlRequest);
            System.out.println(url);
        } catch (OSSException oe) {
    
    
            oe.printStackTrace();
        } catch (ClientException ce) {
    
    
            ce.printStackTrace();
        } catch (Exception e) {
    
    
            e.printStackTrace();
        } finally {
    
    
            ossClient.shutdown();
        }
    }

}

运行结果:

您已经创建Bucket:testbucketwdh。
http://testbucketwdh.oss-cn-beijing.aliyuncs.com/picture_1?Expires=1619918548&OSSAccessKeyId=LTAI4G9U7SDQo3d9sevzhm8h&Signature=eejODWZPHL8xDRoJ0k%2BpxFp1eBc%3D

在html界面中, 可以将上面返回的链接放入img标签的src属性中, 即可在网页中显示图片.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <img src="https://testbucketwdh.oss-cn-beijing.aliyuncs.com/picture_1?Expires=1609917896&OSSAccessKeyId=TMP.3KjiraecJzLn7XbFZ9wQ2Nhvz7JCQa8zBgwfRDTKfeUcorSGT3rt7YpoghboaSS4LRp2YqF6jubLs8oa625S7Jk6rRs5H2&Signature=Nm5YIQtyRdpl3zGV6snJz%2BeAkzs%3D" alt="">
</body>
</html>

效果如下图所示
在这里插入图片描述
阿里提供的demo, 点我下载

猜你喜欢

转载自blog.csdn.net/qq_41359651/article/details/112276044