七牛云存储,图片储存

                                             七牛云存储,图片储存

概述

七牛云对象存储服务提供高可靠、强安全、低成本、可扩展的非结构化数据的存储服务。它提供简单的 Web  服务接口,可以通过七牛开发者平台或客户端存储和检索任意数量的数据,支持 按使用付费模式,可以通过调用REST API 接口和 SDK开发工具包访问,下载协议采用HTTP HTTPS 协议。方便程序员聚焦业务应用,而无需关注底层存储实现技术。

使用七牛云实现图片存储也比较简单只需要按照如下的步骤操作即可:

  1.  申请七牛云账号
  2.  创建空间 Bucket
  3. 请求获取图片
  4. 上传文件

账户申请

1) 进入七牛云官方网站注册开发者账户

七牛云是通过邮箱注册的,注册激活后就进行认证,认证后即可开通对象存储业务了

2)创建存储空间 Bucket

点击左侧左侧菜单  对象存储,一开始我们需要新建一个存储空间来存放我们的图片资源。点击新建存储空间,设置一些需要的内容,然后在左侧的存储空间列表我们就可以看到新加的空间了。

账号注册有些需要注意的点如下:

注册账号之后需要实名认证(个人/企业) 实名认证之后才可以创建存储空间

存储空间创建成功之后,找到个人中心获取accessKeysecretKey和存储空间名称就可以进行上传操作了

​​​​​​​入门案例

七牛对象存储将数据文件以资源的形式上传到空间中。可以创建一个或者多个空间,然后向每个空间中上传一个或  多个文件。通过获取已上传文件的地址进行文件的分享和下载

​​​​​​​搭建环境

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

文件上传


@Test
public void testUploadImage() {
Configuration cfg = new Configuration(Zone.zone0()); UploadManager uploadManager = new UploadManager(cfg);
String accessKey = "COuoDRVa7JLsuurzIvQSI_pEDceHDw3yGfJEmvwv"; String secretKey = "3RWpTjB5Jxg3QosUFr4mxbHXJ5JR2m6AHQqYsSlr";
String bucket = "test-bucket";
String localFilePath = "C:\\Users\\ThinkPad\\Desktop\\ihrm\\day9\\资源\\照片
\\001.png";
//默认不指定key的情况下,以文件内容的hash值作为文件名String key = "test";
Auth auth = Auth.create(accessKey, secretKey); String upToken = auth.uploadToken(bucket); try {
Response response = uploadManager.put(localFilePath, key, upToken);
//解析上传成功的结果
DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
System.out.println(response.bodyString());
} catch (QiniuException ex) { Response r = ex.response; System.err.println(r.toString()); try {
System.err.println(r.bodyString());
} catch (QiniuException ex2) {
//ignore
}
}
}

断点续传


@Test
public void testUploadImage1() {
Configuration cfg = new Configuration(Zone.zone0());
String accessKey = "COuoDRVa7JLsuurzIvQSI_pEDceHDw3yGfJEmvwv"; String secretKey = "3RWpTjB5Jxg3QosUFr4mxbHXJ5JR2m6AHQqYsSlr"; String bucket = "test-bucket";
String key = "test";
Auth auth = Auth.create(accessKey, secretKey); String upToken = auth.uploadToken(bucket);

String localFilePath = "C:\\Users\\ThinkPad\\Desktop\\ihrm\\day9\\资源
\\test.xlsx";

String localTempDir = Paths.get(System.getProperty("java.io.tmpdir"), bucket).toString();
System.out.println(localTempDir);
try {
//设置断点续传文件进度保存目录
FileRecorder fileRecorder = new FileRecorder(localTempDir); UploadManager uploadManager = new UploadManager(cfg, fileRecorder); try {
Response response = uploadManager.put(localFilePath, key, upToken);
//解析上传成功的结果
DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
System.out.println(putRet.key); System.out.println(putRet.hash);
} catch (QiniuException ex) { Response r = ex.response; System.err.println(r.toString()); try {
System.err.println(r.bodyString());
} catch (QiniuException ex2) {
//ignore
}
}
} catch (IOException ex) { ex.printStackTrace();
}

文件下载

对于公开空间,其访问的链接主要是将空间绑定的域名(可以是七牛空间的默认域名或者是绑定的自定义域名)拼

接上空间里面的文件名即可访问,标准情况下需要在拼接链接之前,将文件名进行符。

七牛云实现图片上传

1)创建文件上传的工具类

public class QiniuUploadUtil {

private static final String accessKey = "COuoDRVa7JLsuurzIvQSI_pEDceHDw3yGfJEmvwv"; private static final String secretKey = "3RWpTjB5Jxg3QosUFr4mxbHXJ5JR2m6AHQqYsSlr"; private static final String bucket = "test-bucket";
private static final String prix = "http://pk9vj7em6.bkt.clouddn.com/"; private UploadManager manager;

public QiniuUploadUtil() {
//初始化基本配置
Configuration cfg = new Configuration(Zone.zone0());
//创建上传管理器
manager = new UploadManager(cfg);
}

public String upload(String imgName , byte [] bytes) { Auth auth = Auth.create(accessKey, secretKey);
//构造覆盖上传token
String upToken = auth.uploadToken(bucket,imgName); try {
Response response = manager.put(bytes, imgName, upToken); DefaultPutRet putRet = new Gson().fromJson(response.bodyString(),
DefaultPutRet.class);
//返回请求地址
return prix+putRet.key+"?t="+new Date().getTime();
} catch (Exception ex) { ex.printStackTrace();
}
return null;
}
}

2)使用七牛云实现图片上传

修改UserService方法

public String uploadImage(String id, MultipartFile file) throws Exception { User user = userDao.findById(id).get();
String key = new QiniuUploadUtil().upload(user.getId(), file.getBytes()); if(key != null) {
user.setStaffPhoto(key); userDao.save(user);
}
return key;
}

​​​​​​​

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_无往而不胜_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值