Web项目利用OSS进行图像存储服务

一、OSS介绍        

        在Web项目中,一些常见的功能,比如展示图片,修改头像等,都需要进行图片的上传操作,但是如果是存储在Web服务器中,在读取图片的时候会占用比较多的资源,影响服务器的性能。

        常见的方式是使用OSS(Object Storage Service)存储图片或视频。

用户会先将图片上传至服务器,服务器这里担任的是中转的角色,前端界面发送请求到后端,后端需要保存数据(例如,图片的访问链接),返回给前端,后续需要浏览图片的时候,前端通过访问后端所返回的响应体中的链接到OSS中进行访问。

这种方式可以有效的节省服务器所需的资源,减轻带宽压力。

这里我们是使用七牛云OSS进行服务器直传(数据流的方式)的展示(有一定的免费存储空间),

详情可以参考操作文档:Java SDK_SDK 下载_对象存储 - 七牛开发者中心 (qiniu.com)

二、演示案例

2.1 引入Maven依赖

<dependency>
  <groupId>com.qiniu</groupId>
  <artifactId>qiniu-java-sdk</artifactId>
  <version>[7.13.0, 7.13.99]</version>
</dependency>

 2.2 默认提供的代码

        //构造一个带指定 Region 对象的配置类
        Configuration cfg = new Configuration(Region.region0());
        cfg.resumableUploadAPIVersion = Configuration.ResumableUploadAPIVersion.V2;// 指定分片上传版本
        //...其他参数参考类注释

        UploadManager uploadManager = new UploadManager(cfg);
        //...生成上传凭证,然后准备上传
        String accessKey = "your access key";
        String secretKey = "your secret key";
        String bucket = "your bucket name";

        //默认不指定key的情况下,以文件内容的hash值作为文件名
        String key = null;

        try {
            byte[] uploadBytes = "hello qiniu cloud".getBytes("utf-8");
            ByteArrayInputStream byteInputStream=new ByteArrayInputStream(uploadBytes);
            Auth auth = Auth.create(accessKey, secretKey);
            String upToken = auth.uploadToken(bucket);

            try {
                Response response = uploadManager.put(byteInputStream,key,upToken,null, null);
                //解析上传成功的结果
                DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
                System.out.println(putRet.key);
                System.out.println(putRet.hash);
            } catch (QiniuException ex) {
                ex.printStackTrace();
                if (ex.response != nul
### 阿里云 OSS 对象存储使用指南 #### 选择合适的存储类型 阿里云对象存储 OSS 提供了多种存储类型,用户可以根据实际需求选择最合适的选项来优化成本和性能。这些存储类型包括标准型、低频访问型以及归档型等,每种类型都针对不同的数据访问模式进行了优化[^3]。 #### 创建Bucket并配置权限 为了开始使用OSS服务,需先登录到阿里云控制台创建一个新的bucket容器用于存放文件。在创建过程中可以设置该bucket的地域位置及其公共读写权限级别;之后还可以进一步细化ACL(Access Control List),以更精确地管理谁能够查看或修改其中的内容[^1]。 #### 文件上传与下载操作 完成上述准备工作后就可以利用Web界面直接拖拽方式轻松实现本地计算机上的文件向云端迁移;同时也支持API接口调用来满足程序自动化的需求,在Python环境中可借助`oss2`库来进行交互: ```python import oss2 auth = oss2.Auth('your-access-key-id', 'your-access-key-secret') bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', 'example-bucket') with open('/local/path/to/file.txt', 'rb') as fileobj: bucket.put_object('remote-file-name.txt', fileobj) # 下载文件 bucket.get_object_to_file('remote-file-name.txt', '/local/path/to/downloaded-file.txt') ``` 此段代码展示了如何通过编程手段将指定路径下的文本文件上载至名为`example-bucket`的目标桶内,并可以从远程获取已存在的资源保存于本机目录下[^4]。 #### 图片处理功能应用 除了基本的数据存取外,OSS还集成了丰富的多媒体处理特性之一就是对于图像素材的支持——允许开发者自定义样式参数对原始图进行裁剪缩放等一系列变换后再对外分享链接给其他用户浏览查阅[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值