登入七牛云官网得到3个比较重要的参数。
如图
1.sk
2.ak
3.测试域名

第一步导入七牛云sdk

<!-- 七牛存储的SDK --><dependency><groupId>com.qiniu</groupId><artifactId>qiniu-java-sdk</artifactId><version>7.2.2</version></dependency>

第二步配置文件

#填写自己的参数
qiniu.accesskey=7hLXQfZfPQPB7EWOrwvgKPLQ8BcskSXC2F3G8HdO
qiniu.secretkey=DtR4cFQ48nAZMANHs3002_q5nKSTgXIXTREyKYnL
qiniu.bucket=oc-bucket
qiniu.cdns=ozgcusern.bkt.clouddn.com

第三步基础工具类以及封装七牛云图片sdk

FileType.java
/*** 定义文件类型及其对应魔数*/
public enum FileType {JPEG("FFD8FF"),PNG("89504E47"),GIF("47494638");private String value = "";private FileType(String value) {this.value = value;}public String getValue() {return value;}public void setValue(String value) {this.value = value;}}
FileTypeHelper.java
import java.util.Arrays;
import org.springframework.util.Assert;public class FileTypeHelper {public static FileType getType(byte[] buff){Assert.isTrue(buff!=null &&buff.length>28);byte[] bytes= Arrays.copyOfRange(buff, 0, 28);String magic = bytesToHex(bytes);for(FileType type:FileType.values()){if(magic.startsWith(type.getValue())) return type;}return null;}/*** 判断是否为图片,是图片返回true,否则返回false* * @param buff* @return 图片返回true,否则返回false*/public static boolean isImage(byte[] buff){FileType type = getType(buff);return FileType.JPEG.equals(type)||FileType.PNG.equals(type);}private static String bytesToHex(byte[] src) {  StringBuilder stringBuilder = new StringBuilder();  if (src == null || src.length <= 0) return null;  for (int i = 0; i < src.length; i++) {  int v = src[i] & 0xFF;  String hv = Integer.toHexString(v);  if (hv.length() < 2) {  stringBuilder.append(0);  }  stringBuilder.append(hv);  }  return stringBuilder.toString().toUpperCase();  } }

QiniuImg.java

/*** 七牛图片类*/
public class QiniuImg implements Serializable{private static final long serialVersionUID = -68217983332179128L;private String key;//七牛返回的keyprivate String url;//原图片的urlprivate String url16;//private String url32;//private String url48;//private String url64;//private String url128;//private String url256;//private String url512;//public String getKey() {return key;}public void setKey(String key) {this.key = key;}public String getUrl() {if(StringUtils.isEmpty(key)) return  null;if(this.url==null){this.url = QiniuWrapper.getUrl(key);}return url;}public void setUrl(String url) {this.url = url;}public String getUrl16() {if(StringUtils.isEmpty(key)) return  null;if(this.url16==null){this.url16 = QiniuWrapper.getUrl(key, ThumbModel.THUMB_16.getValue());}return this.url16;}public void setUrl16(String url16) {this.url16 = url16;}public String getUrl32() {if(StringUtils.isEmpty(key)) return  null;if(this.url32==null){this.url32 = QiniuWrapper.getUrl(key, ThumbModel.THUMB_32.getValue());}return this.url32;}public void setUrl32(String url32) {this.url32 = url32;}public String getUrl48() {if(StringUtils.isEmpty(key)) return  null;if(this.url48==null){this.url48 = QiniuWrapper.getUrl(key, ThumbModel.THUMB_48.getValue());}return this.url48;}public void setUrl48(String url48) {this.url48 = url48;}public String getUrl64() {if(StringUtils.isEmpty(key)) return  null;if(this.url64==null){this.url64 = QiniuWrapper.getUrl(key, ThumbModel.THUMB_64.getValue());}return this.url64;}public void setUrl64(String url64) {this.url64 = url64;}public String getUrl128() {if(StringUtils.isEmpty(key)) return  null;if(this.url128==null){this.url128 = QiniuWrapper.getUrl(key, ThumbModel.THUMB_128.getValue());}return this.url128;}public void setUrl128(String url128) {this.url128 = url128;}public String getUrl256() {if(StringUtils.isEmpty(key)) return  null;if(this.url256==null){this.url256 = QiniuWrapper.getUrl(key, ThumbModel.THUMB_256.getValue());}return this.url256;}public void setUrl256(String url256) {this.url256 = url256;}public String getUrl512() {if(StringUtils.isEmpty(key)) return  null;if(this.url512==null){this.url512 = QiniuWrapper.getUrl(key, ThumbModel.THUMB_512.getValue());}return this.url512;}public void setUrl512(String url512) {this.url512 = url512;}//七牛上传key,然后七牛会返回一个key,将返回的key保存到数据库public String getUploadKey(){return QiniuKeyGenerator.generateKey();}}

QiniuKeyGenerator.java

/*** 资源在七牛云存储的key生成器* 注:资源是七牛云存储服务中的逻辑存储单元。对于每一个账号,* 该账号里存放的每个资源都有唯一的一对属主空间(Bucket)与键名(Key),作为识别标识*/
public class QiniuKeyGenerator {public static final String KEY = "/{0}/{1}/{2}/{3}";// 多图片可以按照:/表名/字段名/业务值(refId)/时间戳 处理public static String generateKey(){return MessageFormat.format(KEY, "default", "all", "0", CommonUtil.getUID());}}

QiniuStorage.java

/*** 七牛云存储管理器* 上传图像和查看图像*/
public class QiniuStorage {/*** 上传单张图片;返回上传图片的key* @param buff*/public static String uploadImage(byte[] buff){String key = QiniuKeyGenerator.generateKey();key = QiniuWrapper.upload(buff, key,false);return key;}/*** 上传单张图片;返回上传图片的url,此url会过期,切记不要存储在数据库中;* @param buff* @param img* @return QiniuImg*/public static QiniuImg uploadImage(byte[] buff,QiniuImg img){String key = QiniuWrapper.upload(buff, img.getUploadKey(),false);img.setKey(key);return img;}/*** 上传多个图片* @param imageBuffs 图片字节数组* @param img 分组图片的属性* @return*/public static QiniuImg[] uploadImages(byte[][] imageBuffs,QiniuImg img){QiniuImg[] images = new QiniuImg[imageBuffs.length];for(int i = 0; i < imageBuffs.length; i++){QiniuImg newImg = new QiniuImg();uploadImage(imageBuffs[i],img);newImg.setKey(img.getKey());images[i] = newImg;}return images;}/*** 获取图片链接* @param key* @return*/public static String getUrl(String key){return QiniuWrapper.getUrl(key);}/*** 获取有有效期的图片链接* @param key* @param expires 单位:秒* @return*/public static String getUrl(String key,long expires){return QiniuWrapper.getUrl(key,expires);}/*** 获取图片链接* @param key* @return*/public static String getUrl(String key,ThumbModel model){return QiniuWrapper.getUrl(key,model.getValue());}/*** 获取有有效期的图片链接* @param key* @param expires 单位:秒* @return*/public static String getUrl(String key,ThumbModel model,long expires){return QiniuWrapper.getUrl(key,model.getValue(),expires);}}

ThumbModel.java

/*** 文件的缩略图及其模式字符串定义*/
public enum ThumbModel {THUMB_16("imageView2/2/w/16/h/16"),THUMB_32("imageView2/2/w/32/h/32"),THUMB_48("imageView2/2/w/48/h/48"),THUMB_64("imageView2/2/w/64/h/64"),THUMB_128("imageView2/2/w/128/h/128"),THUMB_256("imageView2/2/w/256/h/256"),THUMB_512("imageView2/2/w/512/h/512");private String value;private ThumbModel(String value) {this.value = value;}public String getValue() {return value;}}

七牛云SDK的封装

/*** 七牛SDK的包装类,以便于业务使用*/
public class QiniuWrapper {private static final Logger logger = LoggerFactory.getLogger(QiniuWrapper.class);private static final String CONFIG_BUCKET="qiniu.bucket";private static final String CONFIG_AK="qiniu.accesskey";private static final String CONFIG_SK="qiniu.secretkey";private static final String CONFIG_CDN="qiniu.cdns";private static final Auth auth;private static final UploadManager uploadManager;private static final String bucketName;private static final List<String> cdns;/*** 从外部文件中初始化七牛存储相关的配置信息*/static{Properties properties =PropertiesUtil.getDefaultProperties();auth = Auth.create(properties.getProperty(CONFIG_AK), properties.getProperty(CONFIG_SK));Configuration cfg = new Configuration(Zone.zone2());//设置空间上传域名uploadManager = new UploadManager(cfg);bucketName=properties.getProperty(CONFIG_BUCKET);String cdn = properties.getProperty(CONFIG_CDN);cdns = Arrays.asList(cdn.split(","));}/*** 获取上传资源的token* @return*/public static String getUploadToken(){return auth.uploadToken(bucketName);}/*** 获取更新资源的token,只能用于更新参数key所代表的资源* @param key 存储空间中已存在的资源key* @return*/public static String getUploadToken(String key){return auth.uploadToken(bucketName,key);}/*** 上传文件* @param data 二进制格式的文件内容* @param key 文件在七牛中的key* @param update 是否是更新* @return*/public static String upload(byte[] data,String key,boolean update){try {String token = update?auth.uploadToken(bucketName,key):auth.uploadToken(bucketName);Response response = uploadManager.put(data, getFullKey(data, key), token);DefaultPutRet ret = response.jsonToObject(DefaultPutRet.class);return ret.key;} catch (QiniuException e) {logger.error("upload file to qiniu cloud storage failed",e);}return null;}private static String getFullKey(byte[] data,String key){FileType type= FileTypeHelper.getType(data);if(type!=null){return key+"."+type.name().toLowerCase();}else{return key;}}public static String getUrl(String key,String model){return getUrl(key, model, 3600);}/*** 获取多个key图片;* @param keys 逗号隔开的多个key;* @param model* @return*/public static List<String> getUrls(String keys,String model){List<String> list = null;if (org.apache.commons.lang.StringUtils.isNotBlank(keys)) {list = new ArrayList<String>();for (String key : keys.split(",")) {list.add(getUrl(key, model, 3600));}}return list;}public static String getUrl(String key){if(!StringUtils.isEmpty(key)){return auth.privateDownloadUrl("http://"+getCDN()+"/@"+key);}return null;}/*** @param key* @param expires 单位:秒* @return*/public static String getUrl(String key,long expires){if(!StringUtils.isEmpty(key)){long time = System.currentTimeMillis()/1000+expires;return auth.privateDownloadUrl("http://"+getCDN()+"/@"+key,time);}return null;}

=======================================================
配置文件读取类

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URI;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;public class PropertiesUtil {private static Map<String,Properties> propMap = new HashMap<String,Properties>();/*设置默认的properties文件,方便操作*/public static final String DEFAULT_PROPERTIES_FILE="application.properties";public static Object getProperty(String file,String key){Properties prop = getProperties(file);if(prop != null && prop.get(key) != null){return prop.get(key);}return null;}public static Properties getProperties(String file){try {if(propMap.get(file) == null){Properties prop = new Properties();      prop.load(PropertiesUtil.class.getClassLoader().getResourceAsStream(file));propMap.put(file,prop);return prop;}else{return propMap.get(file);}} catch (IOException e) {e.printStackTrace();}return null;}public static void updateProperties(Properties prop,String filePath){FileInputStream fis = null;BufferedInputStream bis = null;try {URI fileUri = PropertiesUtil.class.getClassLoader().getResource(filePath).toURI();File file = new File(fileUri);Properties tmpProp = new Properties();fis = new FileInputStream(file);bis = new BufferedInputStream(fis);tmpProp.load(bis);FileOutputStream fos = new FileOutputStream(file);for(Object key : prop.keySet()){tmpProp.setProperty(String.valueOf(key),String.valueOf(prop.get(key)));}tmpProp.store(fos, null);fis.close();fos.close();} catch (Exception e) {e.printStackTrace();}}/*** 从默认配置文件中获取properties* @return*/public static Properties getDefaultProperties(){return getProperties(DEFAULT_PROPERTIES_FILE);}/*** 从默认配置文件中获取配置项* @param key* @return*/public static String getProperty(String key){Properties prop = getDefaultProperties();if(prop != null && prop.get(key) != null){return prop.getProperty(key);}return null;}}

第三步测试类进行测试

public class QiNiuTest extends TestCase {Logger log = Logger.getLogger(AppTest.class);public void testImages() {//测试上传图片byte[] buff = CommonUtil.getFileBytes(new File("C:/Users/paperpass/Desktop/tu29253_9.jpg"));String key = QiniuStorage.uploadImage(buff);System.out.println("key = " + key);//String key = "/default/all/0/0755ffd19e3e416db0a69ca3b23d744a.jpeg";//测试下载图片String url = QiniuStorage.getUrl(key);System.out.println("url = " + url);//测试下载不同大小的图片url = QiniuStorage.getUrl(key,ThumbModel.THUMB_256);System.out.println("url = " + url);}
}

测试结果为


key = /default/all/0/b6a6d44d81f8410ba98b2fa63a9eb62e.jpeg url = http://ozgcuyern.bkt.clouddn.com/@/default/all/0/b6a6d44d81f8410ba98b2fa63a9eb62e.jpeg?e=1510896997&token=7hLXQfZfPQPB7EWOrwvgKPLQ8B3skSXC2F3G8HdO:FQc-sMEM-u1TPMZ5qmvsQG0aYDM= url = http://ozgcuyern.bkt.clouddn.com/@/default/all/0/b6a6d44d81f8410ba98b2fa63a9eb62e.jpeg?imageView2/2/w/256/h/256&e=1510896997&token=7hLXQfZfPQPB7EWOrwvgKPLQ8B3skSXC2F3G8HdO:1nZqpHb15OV2H5Hb4_7HP_SbEek

数据库中直接保存key的值。通过key可以查到七牛云所在的图片。url中参数e指的图片存储的时间,参数token是前面url的加密之后的字符串

七牛云入门使用步骤(图片服务器使用)相关推荐

  1. Java实现七牛云上传图片、读取图片链接

    Java后端实现七牛云上传图片.读取图片链接 添加依赖 <!--七牛云sdk--><dependency><groupId>com.qiniu</groupI ...

  2. 七牛云入门及图片上传

    什么是七牛云? 七牛云是国内领先的企业级公有云服务商,致力于打造以数据为核心的场景化PaaS服务.围绕富媒体场景,七牛先后推出了对象存储,融合CDN加速,数据通用处理,内容反垃圾服务,以及直播云服务等 ...

  3. 七牛云上传图片并返回图片URL

    1.七牛云注册登录 https://portal.qiniu.com/signup/choice 完成实名认证,传身份证正反面之等,大概一个小时左右就认证成功了 2.新建存储空间 地区可以自己选择 3 ...

  4. 七牛云 php 服务器,七牛云3:通过业务服务器上传文件到七牛云

    前面2篇,我们介绍了七牛云的客户端文件直传,客户端直传存在一个问题,就是上传凭证token在前端是暴露的,因此考虑采取通过业务服务器(自己家的服务器)代为上传文件. 整个上传流程用户在前端选择要上传的 ...

  5. 七牛云上传的图片进行删除

    PHP方法: /*** 七牛云商品图片删除2017/10/25*/ public function delGoodsImg() {$this->isShopLogin();$img = I(&q ...

  6. php七牛云批量上传,七牛云——批量将本地图片上传到七牛云

    前言 在本地大概有10w左右的头像图片,打算批量上传到七牛云,寻找后发现了一个神奇的官方工具,十分的好用 工具 资源批量上传和多文件上传 我这里上传本地用的是QsunSync QsunSync Git ...

  7. 利用七牛云作为图片服务器

    在做毕设的时候,有一个需求: 上传一个图片到一个服务器,服务器存储图片后返加一个图片外链. 同事推荐了七牛云,于是去研究了一下七牛云官方文档.果然有收获.在此,记录一下自己探索过程,以便给遇到相同的需 ...

  8. SpringBoot上传文件到 后端服务器 或 云服务器(七牛云、阿里云、腾讯云等等都是一样的操作步骤)

    文章目录 一.新建SpringBoot项目 1.pom.xml 2.application.yml 3.配置Swagger3 4.统一返回类Result 5.统一异常响应ErrorCode 二.上传文 ...

  9. 语雀图片与七牛云之间的迁移同步

    昨天登录在 Github 同步博客时候,忽然发现很多文章的图片都出现了 404!后来检查才知道,原来从 2019.08.07 起,语雀上的一些静态图片开启了防外链设置,因此之前通过 api 同步语雀文 ...

最新文章

  1. STM32项目中一种在线升级/应用升级OTA-IAP设计方案
  2. LRU算法java实现
  3. 【答辩问题】计算机专业本科毕业设计答辩的一般程序2
  4. android自定义协议,Android / iOS-自定义URI /协议处理
  5. Oracle 学习笔记(Windows 环境下安装 + PL/SQL)
  6. 【BZOJ1966】[AHOI2005]病毒检测(动态规划)
  7. 欧瑞变频器故障码表_变频器常见故障处理.doc
  8. 20种最常见的网络安全攻击类型
  9. css样式实现居中对齐
  10. Keil4 基础使用
  11. 数据可视化:推荐6个数据可视化工具软件平台
  12. Visual studio 2022 常用快捷键
  13. SRS SDP解析流程
  14. Python中复数取.imag的问题
  15. Python之禅——个人翻译
  16. matlab读入三维点云数据斯坦福兔子
  17. 基于layui和ThinkPHP6开发的通用后台管理框架
  18. 利用MAPI实现邮件收发(VC++)
  19. E576: viminfo: 缺少 ‘>‘ 位于行:
  20. 定频APK--rftesttool的安装及设置步骤

热门文章

  1. c语言质变量变,从量变到质变------------学习的必由之路
  2. 工业智能网关BL110应用之九十三: 实现西门子S7-1500 PLC接入OPC UA云平台
  3. 国庆假期你是在花钱,还是在赚钱呢?
  4. 我是这样成为年薪30万的前端!
  5. 微信公众号支付--3--接收微信支付异步通知
  6. 《学习之道》第一章开启大门-数学和语言
  7. 至尊智能家居项目开发全过程
  8. 《软件工程导论》第六版_张海藩
  9. let 连续复制_【进阶4-4期】Lodash是如何实现深拷贝的
  10. Ubuntu16.04+CUDA8.0+cudnn v5.1+opencv3.1(2.4.10)+caffe+GTX 1080Ti 机器配置记录