首页 > 其他分享 >使用阿里云实现图片存储

使用阿里云实现图片存储

时间:2024-07-25 20:54:10浏览次数:13  
标签:存储 String 创建 oss ossProperties 阿里 上传 图片

文章目录


前言

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

一、为上传图片做准备

首先需要在阿里云充钱
在阿里云上找到对象存储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";
    }
}

图片上传实现

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

标签:存储,String,创建,oss,ossProperties,阿里,上传,图片
From: https://blog.csdn.net/qq_53118426/article/details/140698653

相关文章

  • php实现pdf转图片
    以下运行环境是Centos7第一,安装ImageMagick(作用,用于处理图片) 第二,安装 ImageMagick开发包(作用,使得可以通过php程序处理图片) 安装成功后开启imagick扩展 以下是简单的demo ......
  • C++ 列式内存布局数据存储格式 Arrow
    ApacheArrow优点:   高性能数据处理:Arrow使用列式内存布局,这特别适合于数据分析和查询操作,因为它允许对数据进行高效批量处理,减少CPU缓存未命中,从而提升处理速度。   零拷贝数据共享:Arrow允许不同系统和进程之间直接共享内存中的数据而无需复制,这对于提高数据......
  • 压缩照片怎么压缩?教你6招,轻松搞定图片压缩(实测有用)
    在如今我们的日常生活中,经常会存储各种各样的照片文件。然而,高清晰度的照片往往会占用大量存储空间并降低页面加载速度,因此掌握图片压缩技巧显得尤为重要。图片压缩是一种技术,通过它我们可以在保持图片质量的前提下减小文件大小,从而提高共享速度和节省存储资源。在本文中,我们将......
  • 最新nacos下载安装,版本号2.4.0,nacos持久化存储到本地mysql中,nacos配置登录账户密码
    官网:https://nacos.io/zh-cn/docs/quickstart/quick-start1.下载地址:https://github.com/alibaba/nacos/releases网络不好,很难下载。直接使用git克隆,然后自己编译,这是最快的了。克隆:gitclonehttps://github.com/alibaba/nacos.git然后到根目录中(我的:E:\Demos\nacos),执行cmd命令:mv......
  • 【pywpsrpc/Python】改变图片宽高报错 对象无效属性: ‘tuple‘ object has no attrib
    概要开发UOS环境下,使用Python通过pywpsrpc库操作word文档在指定段落添加指定宽高的图片时意外发现的该问题,在原作者的github提问后获得解答后记录(源码地址、对应提问链接以及相关资料链接贴在文章末尾)。原因及解决方式首先贴一段简单的代码,作用是新建一个word文档并在其......
  • Python - 如何使用存储在类变量中的类型作为同一类方法的参数的类型提示?
    考虑下面的代码:fromtypingimportProtocol,ClassVar,AnyclassTool(Protocol):t:ClassVar#deff(self,params:self.t)->Any:#NameError:name'self'isnotdefineddeff(self,params)->Any:passclassSum:......
  • 使用SpringAI框架实现文字生成图片壁纸:深入探索与实战
    使用SpringAI框架实现文字生成图片壁纸:深入探索与实战在当今的技术世界中,人工智能(AI)已经成为了一个热门话题。无论是自然语言处理、图像识别还是生成对抗网络(GAN),AI的应用场景无处不在。今天,我们将深入探讨如何使用SpringAI框架来实现一个有趣的功能:根据文字生成图片壁纸。什么是......
  • MySQL 学习笔记 进阶(存储引擎,索引上)
    存储引擎 存储引擎-MySQL体系结构连接层服务层引擎层存储层 存储引擎-简介简介:存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方式。存储引擎是基于表的,而不是基于库的,所以存储引擎也可被成为表类型。在创建表时,指定存储引擎CREATETABLE表名(......
  • 尝试将 bs4 方法应用于维基百科页面:结果不存储在 df 中
    由于维基百科上的抓取是一种非常非常常见的技术-我们可以使用适当的方法来处理许多不同的工作-我在获取结果方面确实遇到了一些问题-并将其存储到df中好吧-作为一个非常常见的Wikipedia-bs4作业的示例-我们可以采用这个:在此页面上,我们有超过600个结果-......
  • .net-base64转ofd文件转pdf转图片后压缩打包
    最近有需求从第三方获取到ofd文件后,需要转pdf,1.目前看的有一个免费的插件,需要安装程序包FreeSpire.PDF 安装后,直接引用//odf文件地址stringpath=@"D:\OFD\20240725\吴天.ofd";OfdConverterconverter=newOfdConverter(path);//path......