今天有一个业务需要做处理。把网络上的图片保存到服务器上,本地存储地址就可以。几经考虑,选择了七牛云服务器。没有别的原因,api丰富且简单。
首先需要注册成为七牛云用户,附上七牛云官网,可自行注册:https://www.qiniu.com/
注册成功后,可查看自己的AccessKey和SecretKey,附上查看的地址:https://portal.qiniu.com/user/key
因为待会调用七牛云的接口的时候会用到,所以建议把两个key给粘贴出来。
我们查看一下它的上传代码,附上官方api:https://developer.qiniu.com/kodo/sdk/1239/java
所需要的只有三个凭证。AccessKey
,SecretKey
和Bucket。
如何获取bucket呢,这个需要我们自己去进行创建,附创建地址:https://portal.qiniu.com/bucket/create
这里创建的时候存储空间名称就是bucket,可选择存储区域,温馨提示:选择自己服务器所在的对应区域,可减少流量的传输,加快速度,说白了省钱。
创建完毕后等待3个工作日内处理完毕后就可以自行玩转了。
实战:
因为我的业务是把网络的图片存储到服务器,所以调用的api为:抓取网络资源到空间。
//构造一个带指定Zone对象的配置类,Zone就是我们可选的存储区域 Configuration cfg = new Configuration(Zone.zone0()); //...其他参数参考类注释 String accessKey = "对应的accessKey"; String secretKey = "对应的secretKey"; String bucket = "存储空间名称bucket"; String key = "这里就是要保存的文件名称,比如:a.jpg"; String remoteSrcUrl = "这里是我们要保存的网络图片地址,比如:http://devtools.qiniu.com/qiniu.png"; Auth auth = Auth.create(accessKey, secretKey); BucketManager bucketManager = new BucketManager(auth, cfg); //抓取网络资源到空间 try { FetchRet fetchRet = bucketManager.fetch(remoteSrcUrl, bucket, key); System.out.println(fetchRet.hash); System.out.println(fetchRet.key); System.out.println(fetchRet.mimeType); System.out.println(fetchRet.fsize); } catch (QiniuException ex) { System.err.println(ex.response.toString()); }
ok。执行之后网络图片就保存到我们的服务器啦,业务中也可把key和remoteSrcUrl都保存到数据库,方便确认和查找。