1.引语

在实际开发中,我们会有很多处理不同功能的服务器。例如:

应用服务器:负责部署我们的应用

数据库服务器:运行我们的数据库

文件服务器:负责存储用户上传文件的服务器

分服务器处理的目的是让服务器各司其职,从而提高我们项目的运行效率。

常见的图片存储方案:

方案一:使用nginx搭建图片服务器

方案二:使用开源的分布式文件存储系统,例如Fastdfs、HDFS等

方案三:使用云存储,例如阿里云、七牛云等

2.操作

通过七牛云提供的开发者中心学习如何操作七牛云服务,地址:七牛开发者中心

选择对象存储开发手册,采用Java SDK方式

安装

安装 Maven 的插件:The Maven Integration for Eclipse

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

鉴权

Java SDK的所有的功能,都需要合法的授权。授权凭证的签算需要七牛账号下的一对有效的Access KeySecret Key

3.Java SDK操作七牛云

新建测试类,使用七牛云提供的SDK方法实现将本地图片上传到七牛云服务器

注意导入的依赖和包需要是七牛云的

将官方文档的代码粘贴修改相关参数

import com.google.gson.Gson;
import com.qiniu.common.QiniuException;
import com.qiniu.http.Response;
import com.qiniu.storage.Configuration;
import com.qiniu.storage.Region;
import com.qiniu.storage.UploadManager;
import com.qiniu.storage.model.DefaultPutRet;
import com.qiniu.util.Auth;
import org.junit.Test;public class QiNiuTest {//使用七牛云提供的SDK方法实现将本地图片上传到七牛云服务器@Testpublic void test1(){//构造一个带指定 Region 对象的配置类Configuration cfg = new Configuration(Region.region2());//使用华南机房cfg.resumableUploadAPIVersion = Configuration.ResumableUploadAPIVersion.V2;// 指定分片上传版本
//...其他参数参考类注释UploadManager uploadManager = new UploadManager(cfg);
//...生成上传凭证,然后准备上传String accessKey = "YLRQlxIU5IyLEGSbhFt-hAYKvGY0_zNk_eABhM8t";String secretKey = "eswtzJogA9qDSne9Z9uZM8Kt8QNS0AYPNS971dxX";String bucket = "itcastheallth-sapce-01";
//如果是Windows情况下,格式是 D:\\qiniu\\test.pngString localFilePath = "C:\\Users\\LuMengyun\\Desktop\\资料-传智健康项目\\day04\\资源\\图片资源\\03a36073-a140-4942-9b9b-712cecb144901.jpg";
//默认不指定key的情况下,以文件内容的hash值作为文件名String key = "null";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(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}}}
}

新建测试类,测试删除七牛云服务器中的图片

@Testpublic void test2(){//构造一个带指定 Region 对象的配置类Configuration cfg = new Configuration(Region.region2());
//...其他参数参考类注释String accessKey = "YLRQlxIU5IyLEGSbhFt-hAYKvGY0_zNk_eABhM8t";String secretKey = "eswtzJogA9qDSne9Z9uZM8Kt8QNS0AYPNS971dxX";String bucket = "itcastheallth-sapce-01";String key = "abc.jpg";Auth auth = Auth.create(accessKey, secretKey);BucketManager bucketManager = new BucketManager(auth, cfg);try {bucketManager.delete(bucket, key);} catch (QiniuException ex) {//如果遇到异常,说明删除失败System.err.println(ex.code());System.err.println(ex.response.toString());}}

4.封装,方便使用

为了方便操作七牛云存储服务,我们可以将官方提供的案例简单改造成一个工具类,在我们的项目中直接使用此工具类来操作就可以:

如果Gson爆红显示不能找到此符号,在pom文件中添加Gson的依赖,刷新即可

package com.itheima.utils;import com.google.gson.Gson;
import com.qiniu.common.QiniuException;
import com.qiniu.common.Zone;
import com.qiniu.http.Response;
import com.qiniu.storage.BucketManager;
import com.qiniu.storage.Configuration;
import com.qiniu.storage.Region;
import com.qiniu.storage.UploadManager;
import com.qiniu.storage.model.DefaultPutRet;
import com.qiniu.util.Auth;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;/*** 七牛云工具类*/
public class QiniuUtils {public  static String accessKey = "YLRQlxIU5IyLEGSbhFt-hAYKvGY0_zNk_eABhM8t";public  static String secretKey = "eswtzJogA9qDSne9Z9uZM8Kt8QNS0AYPNS971dxX";public  static String bucket = "itcastheallth-sapce-01";public static void upload2Qiniu(String filePath,String fileName){//构造一个带指定Zone对象的配置类Configuration cfg = new Configuration(Region.region2());//使用华南机房cfg.resumableUploadAPIVersion = Configuration.ResumableUploadAPIVersion.V2;// 指定分片上传版本//...其他参数参考类注释UploadManager uploadManager = new UploadManager(cfg);//...生成上传凭证,然后准备上传Auth auth = Auth.create(accessKey, secretKey);String upToken = auth.uploadToken(bucket);try {Response response = uploadManager.put(filePath, fileName, 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}}}//上传文件public static void upload2Qiniu(byte[] bytes, String fileName){//构造一个带指定Zone对象的配置类Configuration cfg = new Configuration(Region.region2());//使用华南机房//...其他参数参考类注释UploadManager uploadManager = new UploadManager(cfg);//默认不指定key的情况下,以文件内容的hash值作为文件名String key = fileName;Auth auth = Auth.create(accessKey, secretKey);String upToken = auth.uploadToken(bucket);try {Response response = uploadManager.put(bytes, 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}}}//删除文件public static void deleteFileFromQiniu(String fileName){//构造一个带指定Zone对象的配置类Configuration cfg = new Configuration(Zone.zone0());String key = fileName;Auth auth = Auth.create(accessKey, secretKey);BucketManager bucketManager = new BucketManager(auth, cfg);try {bucketManager.delete(bucket, key);} catch (QiniuException ex) {//如果遇到异常,说明删除失败System.err.println(ex.code());System.err.println(ex.response.toString());}}
}

图片存储方案-七牛云存储相关推荐

  1. wordpress使用二级域名绑定七牛云存储做图片存储站

    2019独角兽企业重金招聘Python工程师标准>>> wordpress使用二级域名绑定七牛云存储做图片存储站 一般个人博客站的空间都不是太大,如果博客中有许多图片的话就要购买更大 ...

  2. 【微信小程序控制硬件⑥ 进阶篇】服务器如何集成七牛云存储SDK,把用户自定义设备图片存储在第三方服务器!

    本博文由热爱分享热爱技术的半颗心脏原创,非官方人员.非组织名义编写,博文如有不对或侵犯您的权益,请及时留言,第一时间纠正! [微信小程序控制硬件①] 全网首发,借助 emq 消息服务器带你如何搭建微信 ...

  3. Maven仓库搭建(二):GitHub、又拍云、七牛云存储

    转载自:http://blog.csdn.net/xiao__gui/article/details/52640280 在上一篇博文中,主要介绍了Maven仓库搭建原理,除了Nexus外,随意使用一个 ...

  4. fatal error lnk1120: 1 个无法解析的外部命令_3月1日七牛云存储割韭菜的应对方法...

    前言 早上起来看邮件,看到一封被七牛云割韭菜的公告: 内心冰冰凉,不过大家都要吃饭的嘛总不能一直免费下去.所以来研究一下对于我们这种穷人应该如何应对. 一.七牛CDN加速流程 主要流程分析 1.用户通 ...

  5. 添加七牛云存储_3月1日七牛云存储割韭菜的应对方法

    前言 早上起来看邮件,看到一封被七牛云割韭菜的公告: 内心冰冰凉,不过大家都要吃饭的嘛总不能一直免费下去.所以来研究一下对于我们这种穷人应该如何应对. 一.七牛CDN加速流程 主要流程分析 1.用户通 ...

  6. 七牛云存储,图片储存

    七牛云存储,图片储存 概述 七牛云对象存储服务提供高可靠.强安全.低成本.可扩展的非结构化数据的存储服务.它提供简单的 Web  服务接口,可以通过七牛开发者平台或客户端存储和检索任意数量的数据,支持 ...

  7. 《介绍一款开源的类Excel电子表格软件》续:七牛云存储实战(C#)

     两个月前的发布的博客<介绍一款开源的类Excel电子表格软件>引起了热议:在博客园有近2000个View.超过20个评论. 同时有热心读者电话咨询如何能够在SpreadDesing中 ...

  8. 苹果cms怎么同步图片到新浪或是七牛云存储

    做影视站视频资源多了以后图片是个很头疼的事,不但占用空间还影响网站响应速度,其实苹果cms官方给出的不错方案就是把图片同步到第三方云存储例如:新浪图床,七牛云存储,又拍云存储等. 具体操作步骤如下: ...

  9. 使用七牛云存储在网站中进行图片外链

    在CSDN中写博客,如果想在文章中插入一张图片,其实是非常简单的,只要从你本机进行图片选择,然后选择上传,图片就会上传到CSDN的服务器,到时候在文章显示的时候就会读取该图片.但是如果是在自己的搭建的 ...

最新文章

  1. java51游戏_Java作业实践(一)魔板游戏
  2. 【错误记录】NDK 配置错误 ( C/C++ debug|arm64-v8a : Could not get version from cmake.dir path )
  3. vc获取n卡编号_电脑入门知识:通过显卡型号中字母和数字判断显卡性能
  4. php通知websocket,php实现websocket实时消息推送
  5. 设计模式适配器模式_21世纪的设计模式:适配器模式
  6. shell 文件内容替换 sed用法
  7. linux 终端必须退出 history才会记录吗,Linux随笔 - linux 多个会话同时执行命令后history记录不全的解决方案【转载】...
  8. POJ 1236 Network of Schools(强连通 Tarjan+缩点)
  9. Linux下setsockopt函数返回-1,errno=22
  10. 给editplus加一个主题
  11. 【php毕业设计】基于php+mysql的学生签到考勤系统设计与实现(毕业论文+程序源码)——学生签到考勤系统
  12. centos7 部署dzzoffice最新版详细教程
  13. 不同Ubuntu版本,对应ROS版本
  14. undefined运算
  15. 人教版,北师大版,北京版和苏教版的四年级数学知识点对比(附视频)
  16. 基于lstm+crf实现电子病历实体信息识别 完整的代码+数据集+说明 毕设
  17. 用户、巨头、计算平台,最终都是“社交”的傀儡?
  18. [机器学习算法]GBDT梯度提升决策树
  19. 快速对齐word目录页码
  20. 高效程序猿的狂暴之路

热门文章

  1. 你知道抖音的洗脑,却不知道他的产品设计有多牛
  2. 安卓手机主题软件_【软件】安卓手机延时摄影视频软件APP
  3. 最新编程语言排行榜出炉
  4. VMware中Mac虚拟机开机出现“电脑因出现问题而重新启动,请按一下按键,或等几秒钟以继续启动。”
  5. 美国IT企业因日韩网民网络互攻被牵连受害
  6. 【转】[行业透视] 外企九年-我最终选择放弃
  7. 聚合黑科技(电脑端)
  8. POJ 2993【Emag eht htiw Em Pleh】
  9. OLED液晶屏幕(2)取模软件
  10. “链游之王”Axie引入全新保险机制 Ronin桥重新上线 避免重蹈覆辙