美文网首页SpringHome
使用七牛云存储图片案例

使用七牛云存储图片案例

作者: 叩丁狼教育 | 来源:发表于2018-11-12 17:00 被阅读227次

本文作者:陈惠,叩丁狼高级讲师。原创文章,转载请注明出处。

现在很多的网站都会用到大量的图片,而图片是网页传输中占主要的数据量,也是影响网站性能的因素之一。因此很多网站都会将图片存储从网站中分离出来,另外搭建一个或多个服务器来存储图片,而网页上的图片都用一个URL地址来指向这些服务器上的图片的地址,这样的话网站的性能就明显提高了。图片服务器可以自己搭建,或者使用网上的云服务器,比如阿里也有,本文选用的是七牛云的对象存储来实现。在七牛云上个人注册并且实名认证成功后可免费使用储存空间10GB,用于测试是完全足够了。

image.png

使用步骤:

1. 准备工作
注册后进行实名认证,通过后可以获得AccessKey以及SecretKey,主要是后面调用接口的时候需要使用。

2.创建存储空间
点击”管理控制台”——> “对象存储”——>”新建存储空间”,并且填入对应的信息。

image.png

如果你希望用户在任何情况下都可以直接访问资源,可以直接将空间设为公开。

3.在项目中引入七牛云提供的JAVA-SDK
注意:此 SDK 适用于 Java 7 及以上版本

使用maven的方式引入:

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

这里的version指定了一个版本范围,每次更新pom.xml的时候会尝试去下载7.2.x版本中的最新版本,不过你也可以手动指定一个固定的版本。

4.使用SDK提供的图片上传工具
七牛文件上传分为客户端上传(主要是指网页端和移动端等面向终端用户的场景)和服务端上传两种场景,具体可以参考官方文档 ,文中使用的是服务端上传的方式。

结合SpringMVC来上传图片到七牛云:

/**
 * 文件上传工具
 */
public class UploadUtil {

    /**
     * 上传到七牛云
     * @param file 上传的图片
     * @return 七牛云中图片的名字
     */
    public static String uploadQiniu(MultipartFile file) {
        //构造一个带指定Zone对象的配置类
        Configuration cfg = new Configuration(Zone.zone2());
        //...其他参数参考类注释
        UploadManager uploadManager = new UploadManager(cfg);
        //...生成上传凭证,然后准备上传
        String accessKey = "你的accessKey";
        String secretKey = "你的secretKey";
        //存储空间的名字
        String bucket = "wolfcode";
        //默认不指定key的情况下,以文件内容的hash值作为文件名
        String key = null;
        Auth auth = Auth.create(accessKey, secretKey);
        String upToken = auth.uploadToken(bucket);
        try {
            Response response = uploadManager.put(file.getBytes(), key, upToken);
            //解析上传成功的结果
            DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
            return putRet.key;
        } catch (QiniuException ex) {
            Response r = ex.response;
            System.err.println(r.toString());
            try {
                System.err.println(r.bodyString());
            } catch (QiniuException ex2) {
                //ignore
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        return null;
    }
}

备注:
1 七牛存储支持空间创建在不同的机房,Zone对象是指定具体哪个机房


image.png

2 默认不指定key的情况下,以文件内容的hash值作为文件名,使用hash的好处还可以去除重复图片,重复上传同一张图片,在七牛云中只会占用一个图片的空间。

3 上传成功后的返回的DefaultPutRet对象,里面包含图片的hash值,和图片的key值其实就是文件名。

最后一步,就是访问图片了,打开对象存储空间,可以看到七牛云分配的外链域名,以及上传过的图片,把域名和图片的key值拼接在一起,就是图片的URL了,如:http://pgd3zoxnk.bkt.clouddn.com/FgaeuBs1QwDZUd9UO4betMtgZOMs

image.png

想获取更多技术视频,请前往叩丁狼官网:http://www.wolfcode.cn/openClassWeb_listDetail.html

相关文章

  • 使用七牛云存储图片案例

    本文作者:陈惠,叩丁狼高级讲师。原创文章,转载请注明出处。 现在很多的网站都会用到大量的图片,而图片是网页传输中占...

  • springboot+jpa+redis+quzartz+ela

    图片上传 图片存储在七牛云对象存储中,所以首先配置七牛云sdk pom.xml application.yml 七...

  • 基于Flask开发的前后端分离租房项目(四)

    十、用户详细信息模块 10.1使用七牛云平台来存储图片,首先去七牛云官网注册一个账号,创建一个存储空间 10.2安...

  • Hexo七牛插件安装与使用

    前言 本篇博客主要讲解七牛云插件安装与使用,博客中获取七牛云存储的图片主要有两种方式,一种是在七牛控制台中上传图片...

  • 单车第七天

    用户上传头像,使用云存储。我们这里使用七牛七牛javasdkhttps://developer.qiniu.com...

  • SpringBoot集成百度UEditor(实现七牛云存储)

    图片如果都存在本地的话可能迁移起来会有点麻烦,所以可以选择存到云上,这里推荐使用七牛云 在数据存储这一块七牛云的个...

  • 七牛云对象存储+Mpic图床,实现图片托管

    七牛云对象存储+Mpic图床,实现图片托管。 账号申请:七牛云 打开官网 七牛云,注册账号,完成实名认证 为什么选...

  • 2019051202 七牛云绑定阿里云域名

    前言 使用七牛云作为图床存储图片时候,七牛云会分配一个有效期为30天的域名,对于长期使用的用户来说很不方便,可以通...

  • WebService知识整理

    WebService学习笔记 友情提示,本文档的图床使用极简图床进行图片存储,默认存储到七牛云空间 本学习贴是根据...

  • 云通讯 SystemError: Parent module &

    七牛云存储图片的好处 图片/视频保存到自己服务器带来的问题?1、 图片会重复,占用大量内存,要使用去重功能2、 ...

网友评论

本文标题:使用七牛云存储图片案例

本文链接:https://www.haomeiwen.com/subject/semcfqtx.html