利用七牛云作为图片服务器
在做毕设的时候,有一个需求: 上传一个图片到一个服务器,服务器存储图片后返加一个图片外链。
同事推荐了七牛云,于是去研究了一下七牛云官方文档。果然有收获。在此,记录一下自己探索过程,以便给遇到相同的需求的同志提供一些帮助。
一、效果展示!
(1)选择好图片,请求接口后,图片存储在七牛云,后台把图片的外链返回
(2)访问这个外链,可展示图片
(二)步骤展示(关键代码)
(1) 封装上传图片方法
package com.wyu.graduation.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.Configuration; import com.qiniu.storage.UploadManager; import com.qiniu.storage.model.DefaultPutRet; import com.qiniu.util.Auth; /** * 利用七牛去官方的jdk * Created by Administrator on 2018/3/14 0014. */ public class Qiniu {//根据七牛云的个人中心来填写 private static final String accessKey = "xxx"; private static final String secretKey = "xxx"; private static final String bucket = "xxx"; /** * @param data * @return 外键地址 */ public static String upLoadImage(byte[] data){//图片的外链地址 StringBuffer imgUrl = new StringBuffer("http://p5k92qj55.bkt.clouddn.com/"); //构造一个带指定Zone对象的配置类 Configuration cfg = new Configuration(Zone.zone0()); UploadManager uploadManager = new UploadManager(cfg); //...生成上传凭证,然后准备上传 //默认不指定key的情况下,以文件内容的hash值作为文件名 String key = null; Auth auth = Auth.create(accessKey, secretKey); String upToken = auth.uploadToken(bucket); try {//上传文件 Response response = uploadManager.put(data,key,upToken); //解析上传成功的结果 DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class); imgUrl.append(putRet.key); } catch (QiniuException ex) {Response r = ex.response; System.err.println(r.toString()); try {System.err.println(r.bodyString()); } catch (QiniuException ex2) {//ignore }}return imgUrl.toString(); }public static void main(String[] args) {}}
这里是根据七牛云的官方文档的demo来编写的。文章最后将给出官方文档的地址。这段代码最关键的地方就在于
uploadManager.put(data,key,upToken)
这是jdk源码关于这个函数的解释。。
在uploadImg() 这个函数,有几个重要的参数。在七牛云开发者中心可以找到。另外需要注意,这个函数只适用公开空间。
accessKey: Access 密钥
secretKey :Secret 密钥
bucket: 存储空间
(2) 封装restful api 接口
import com.wyu.graduation.domain.Result; import com.wyu.graduation.utils.Qiniu; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.util.HashMap; import java.util.Map; /** * Created by Administrator on 2018/3/14 0014. */ @RestController public class QiniuApi {@PostMapping("/thirdApi/qiniu/img")public Result upImg(@RequestParam("file")MultipartFile multipartFile) throws IOException {byte[] imgBytes = multipartFile.getBytes(); //MultipartFile 转 字节数组 String imgUrl = Qiniu.upLoadImage(imgBytes); Map map = new HashMap<>(); map.put("imgUrl",imgUrl); return Result.genSuccessResult(map); } }
在这个方法中,做了两件事: (1)把前端传过来的MultipartFile 转化为 byte[] 字符数组,(2)把图片上传后的外链地址返回前端。
参考文档:
1、https://developer.qiniu.com/kodo/sdk/1239/java
利用七牛云作为图片服务器相关推荐
- 利用七牛云如何上传图片制作外链?
七牛云网站地址:https://portal.qiniu.com/signin 一:为什么要用七牛云制作图片外链? 外链简单的说就是网站外部的链接即一个网站的外部所有指向该网站的链接,不管是锚文字链接 ...
- 如何利用七牛云在线存储图片
平时写学习笔记和博客文章的时候早已习惯了使用 Markdown 记录,各种方便,但图片的保存和展示成了一个比较关键的问题,虽然可以使用本地相对路径显示图片,但也很不方便,总不能一直是单机版吧.七牛云是 ...
- 七牛云 vue 图片上传简单解说,js 上传文件图片
七牛云 vue 图片上传简单解说,js 上传文件图片 一.七牛云简介 首次使用七牛云存储进行项目的图片存储,整了一上午才整明白,这些官方的教程把明白人也给说糊涂了,文档很不规范. 七牛云有免费的使用额 ...
- 微信小程序 - 七牛云CDN图片加载空白
由于七牛云的系统有防盗链域名白名单限制,所以微信请求时域名是微信服务器那边的.和上一篇跨域的文章一样,将七牛云增加微信服务器的白名单 再或者就是图片分辨率太大了!让UI修改一下! 编辑于 2019年3 ...
- Day88.七牛云: 房源图片、用户头像上传 Common-upload、Webuploader
目录 一.七牛云存储 4.鉴权 二.开发者中心,上传.删除测试 1.添加依赖 2.代码测试 3. 封装工具类 三.房源图片上传 1. spring mvc 配置上传支持 2. house/show.h ...
- 七牛云存储,图片储存
七牛云存储,图片储存 概述 七牛云对象存储服务提供高可靠.强安全.低成本.可扩展的非结构化数据的存储服务.它提供简单的 Web 服务接口,可以通过七牛开发者平台或客户端存储和检索任意数量的数据,支持 ...
- 实现Java+Vue上传图片到七牛云和从七牛云删除图片
环境准备 开发环境 后端: JDK1.8, SpringBoot2.2.2.RELEASE, Maven3.6.3 前端: vue-element-admin4.4.0 相关链接 七牛云JavaSDK ...
- php利用七牛云的对象存储完成图片上传-高效管理图片(用php搭建一个自己的图床) nice!!!
在搭建个人博客时,大家都会买一台云服务器.可是图片的存放一直是一个问题,这里分享一个免费的第三方平台对象存储-七牛云.大家可以把图片上传到七牛云的对象存储,大大节约服务器的压力. 首先,大家在使用七牛 ...
- 【手把手教学】利用七牛云免费CDN服务为自己网站启用图片CDN加速 - 免费版10G/月
效果图 A) 我的网站原图: http://assets.xxx.com/assets/img/banner.jpg B) 七牛CDN图片外链:http://cdn.xxx.com/ass ...
最新文章
- kafka集群编程指南
- MSI/MSI-X Capability结构 (转)
- java大津法确定阈值,大津法得到自适应阈值
- debian 查看php版本,在debian 9中为php7.0-fpm启用状态查询
- VS编译报错Error2019
- 【限时免费】真实数据操练,经典算法分析,实战NLP领域,只等你来!
- java replaceall删除中括号和内容_replaceAll()如何同时替换多个不同的字符串(或多个符号)...
- 基于单片机的体育比赛计分器系统设计(#0409)
- 高通msm8953平台射频调试
- Flink 实时计算 - 进阶篇(如何自定义 Data Source 与 Data Sink)
- Windows网络诊断和配置常用命令详解
- 自己做量化交易软件(44)小白量化实战17--利用小白量化金融模块在迅投QMT极速策略交易系统上仿大智慧指标回测及实战交易设计
- 西工大计算机学院二级教授,计算机学院高武教授:践行科研育人,培养拔尖创新人才...
- Cisco Packet Tracer Student抓取协议包简介
- 一千零一夜的观后感(一)
- matlab输出二进制,Matlab二进制类型数据相关操作
- 阿里yum源与华为yum源的配置
- JAVA_金额大写转换
- 利用SimLab软件进行参数敏感性分析
- Video4linux 编程