Java上传图片至七牛云

首先,来看官方文档

https://developer.qiniu.com/kodo/sdk/1239/java(官方文档链接)

最简单的就是上传本地文件,直接指定文件的完整路径即可上传。

 
 
  1. //构造一个带指定Zone对象的配置类
  2. Configuration cfg = new Configuration(Zone.zone0());
  3. //...其他参数参考类注释
  4. UploadManager uploadManager = new UploadManager(cfg);
  5. //...生成上传凭证,然后准备上传
  6. String accessKey = "your access key";
  7. String secretKey = "your secret key";
  8. String bucket = "your bucket name";
  9. //默认不指定key的情况下,以文件内容的hash值作为文件名
  10. String key = null;
  11. try {
  12. byte[] uploadBytes = "hello qiniu cloud".getBytes( "utf-8");
  13. Auth auth = Auth.create(accessKey, secretKey);
  14. String upToken = auth.uploadToken(bucket);
  15. try {
  16. Response response = uploadManager.put(uploadBytes, key, upToken);
  17. //解析上传成功的结果
  18. DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
  19. System.out.println(putRet.key);
  20. System.out.println(putRet.hash);
  21. } catch (QiniuException ex) {
  22. Response r = ex.response;
  23. System.err.println(r.toString());
  24. try {
  25. System.err.println(r.bodyString());
  26. } catch (QiniuException ex2) {
  27. //ignore
  28. }
  29. }
  30. } catch (UnsupportedEncodingException ex) {
  31. //ignore
  32. }

数据流上传

这里演示的是InputStream对象的上传,适用于所有的InputStream子类。这里的ByteInputStream只用于演示目的,实际用法根据情况而定。

 
 
  1. //构造一个带指定Zone对象的配置类
  2. Configuration cfg = new Configuration(Zone.zone0());
  3. //...其他参数参考类注释
  4. //...生成上传凭证,然后准备上传
  5. String accessKey = "your access key";
  6. String secretKey = "your secret key";
  7. String bucket = "your bucket name";
  8. //如果是Windows情况下,格式是 D:\\qiniu\\test.png
  9. String localFilePath = "/home/qiniu/test.mp4";
  10. //默认不指定key的情况下,以文件内容的hash值作为文件名
  11. String key = null;
  12. Auth auth = Auth.create(accessKey, secretKey);
  13. String upToken = auth.uploadToken(bucket);
  14. String localTempDir = Paths.get(System.getenv( "java.io.tmpdir"), bucket).toString();
  15. try {
  16. //设置断点续传文件进度保存目录
  17. FileRecorder fileRecorder = new FileRecorder(localTempDir);
  18. UploadManager uploadManager = new UploadManager(cfg, fileRecorder);
  19. try {
  20. Response response = uploadManager.put(localFilePath, key, upToken);
  21. //解析上传成功的结果
  22. DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
  23. System.out.println(putRet.key);
  24. System.out.println(putRet.hash);
  25. } catch (QiniuException ex) {
  26. Response r = ex.response;
  27. System.err.println(r.toString());
  28. try {
  29. System.err.println(r.bodyString());
  30. } catch (QiniuException ex2) {
  31. //ignore
  32. }
  33. }
  34. } catch (IOException ex) {
  35. ex.printStackTrace();
  36. }
下载文件

文件下载分为公开空间的文件下载和私有空间的文件下载。

公开空间

对于公开空间,其访问的链接主要是将空间绑定的域名(可以是七牛空间的默认域名或者是绑定的自定义域名)拼接上空间里面的文件名即可访问,标准情况下需要在拼接链接之前,将文件名进行urlencode以兼容不同的字符。

   
   
  1. String fileName = "七牛/云存储/qiniu.jpg";
  2. String domainOfBucket = "http://devtools.qiniu.com";
  3. String encodedFileName = URLEncoder.encode(fileName, "utf-8");
  4. String finalUrl = String.format( "%s/%s", domainOfBucket, encodedFileName);
  5. System.out.println(finalUrl);

私有空间

对于私有空间,首先需要按照公开空间的文件访问方式构建对应的公开空间访问链接,然后再对这个链接进行私有授权签名。

   
   
  1. String fileName = "七牛/云存储/qiniu.jpg";
  2. String domainOfBucket = "http://devtools.qiniu.com";
  3. String encodedFileName = URLEncoder.encode(fileName, "utf-8");
  4. String publicUrl = String.format( "%s/%s", domainOfBucket, encodedFileName);
  5. String accessKey = "your access key";
  6. String secretKey = "your secret key";
  7. Auth auth = Auth.create(accessKey, secretKey);
  8. long expireInSeconds = 3600; //1小时,可以自定义链接过期时间
  9. String finalUrl = auth.privateDownloadUrl(publicUrl, expireInSeconds);
  10. System.out.println(finalUrl);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值