使用阿里云实现图片存储


前言

做一个图片上传的功能,图片存储到阿里云服务器。

一、为上传图片做准备

首先需要在阿里云充钱
在阿里云上找到对象存储oos
在这里插入图片描述
点击管理控制台

在这里插入图片描述
点击创建Bucket
在这里插入图片描述
创建的bucket名字
然后按照我的来创建就行。
在这里插入图片描述
在这里插入图片描述
这是阿里云存储图片的桶
然后鼠标放到头像上点击AccessKey
在这里插入图片描述
点击创建AccessKey
在这里插入图片描述
创建好AccessKey后AccessKeyID就是key
下面的密钥要记住,只会显示一次,最好复制粘贴到自己能找到的位置。
后面写代码要用

二、代码实现图片上传

首先找到阿里云提供的sdk

添加依赖

<dependency>
    <groupId>com.aliyun.oss</groupId>
    <artifactId>aliyun-sdk-oss</artifactId>
    <version>3.10.2</version>
</dependency>
<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-java-sdk-core</artifactId>
    <version>4.0.6</version>
</dependency>
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;

public class OssTest {
    public static void main(String[] args) throws FileNotFoundException {
        // 区域
        String endpoint = "http://oss-cn-beijing.aliyuncs.com";

        // 秘钥
        String accessKeyId = "LTAI5tNmH22y9C7AxdFEgdNv";
        String accessKeySecret = "AHGC0JSnBuYtYg3BnNvyTuwlwyl27n";
        
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

        // 上传文件
        InputStream inputStream = new FileInputStream("D:\\upload\\jr.jpg");
        
        //参数1: 桶名字  参数2: 图片上传后名字   参数3: 图片流
        ossClient.putObject("tlias-gxm-191", "haha.jpg", inputStream);

        // 关闭OSSClient。
        ossClient.shutdown();
    }
}

创建配置类

在这里插入图片描述

@Data
@NoArgsConstructor
@AllArgsConstructor
@ConfigurationProperties(prefix = "oss")//读取配置信息
public class OssProperties {
    private String key; //访问key
    private String secret;//访问秘钥
    private String endpoint;//端点
    private String bucket;//桶名
}

访问key就是AccessID
secret就是访问密钥
endpoint是连接服务器的端点
bucket是自己创建的桶名

这些信息写在配置文件中
在这里插入图片描述

创建工具类

在这里插入图片描述

//阿里存储工具类
@Component
@Import(OssProperties.class)//导入,相当于将OssProperties对象放入容器
public class OssTemplate {

    @Autowired
    private OssProperties ossProperties;

    //文件上传
    public String upload(String fileName, InputStream inputStream) {
        //创建客户端
        OSS ossClient = new OSSClientBuilder().build(ossProperties.getEndpoint(), ossProperties.getKey(), ossProperties.getSecret());

        //设置文件最终的路径和名称
        String objectName = "images/" + new SimpleDateFormat("yyyy/MM/dd").format(new Date())
                + "/" + System.currentTimeMillis() + fileName.substring(fileName.lastIndexOf("."));

        //meta设置请求头,解决访问图片地址直接下载
        ObjectMetadata meta = new ObjectMetadata();
        meta.setContentType(getContentType(fileName.substring(fileName.lastIndexOf("."))));

        //上传
        ossClient.putObject(ossProperties.getBucket(), objectName, inputStream, meta);

        //关闭客户端
        ossClient.shutdown();

        return "https://" + ossProperties.getBucket() + "." + ossProperties.getEndpoint() + "/" + objectName;
    }

    //文件后缀处理
    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";
        }
        return "image/jpg";
    }
}

图片上传实现

在这里插入图片描述
在这里插入图片描述
点击图片上传就会上传到阿里云服务器上,返回一个图片下载地址。
然后点击提交会将上传图片的地址插入到数据库。
在这里插入图片描述
在这里插入图片描述

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值