Java 七牛云存储与下载
七牛云的文件上传和下载(私有空间)
1、本篇博客参考网址
https://blog.csdn.net/peaceful000/article/details/53171578
https://blog.csdn.net/albertfly/article/details/51499812
2、在pom.xml中添加需要的jar
<!--七牛云上传图片服务-->
<!-- https://mvnrepository.com/artifact/com.qiniu/qiniu-java-sdk -->
<dependency>
<groupId>com.qiniu</groupId>
<artifactId>qiniu-java-sdk</artifactId>
<version>7.0.8</version>
</dependency>
3、详细代码
package com.qiniu.upload;
import com.qiniu.common.QiniuException;
import com.qiniu.http.Response;
import com.qiniu.storage.UploadManager;
import com.qiniu.util.Auth;
import com.qiniu.util.StringMap;
import com.squareup.okhttp.OkHttpClient;
import com.squareup.okhttp.Request;
import com.squareup.okhttp.ResponseBody;
import java.io.*;
public class QiniuUtil {
//设置好账号的ACCESS_KEY和SECRET_KEY
String ACCESS_KEY = ""; //这两个登录七牛 账号里面可以找到
String SECRET_KEY = "";
//要上传的空间
String bucketname = ""; //对应要上传到七牛上 你的那个路径(自己建文件夹 注意设置私有)
//上传到七牛后保存的文件名
//密钥配置
Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
//创建上传对象
UploadManager uploadManager = new UploadManager();
/**
* 简单上传,使用默认策略,只需要设置上传的空间名就可以了
*
* @param fileName 文件上传至七牛云空间的名称
* @return
*/
public String getUpToken(String fileName) {
//return auth.uploadToken(bucketname);
//<bucket>:<key>,表示只允许用户上传指定key的文件。在这种格式下文件默认允许“修改”,已存在同名资源则会被本次覆盖。
//如果希望只能上传指定key的文件,并且不允许修改,那么可以将下面的 insertOnly 属性值设为 1。
//第三个参数是token的过期时间
return auth.uploadToken(bucketname, fileName, 3600, new StringMap().put("insertOnly", 0));
}
/**
* 普通上传
*
* @param filePath 文件路径
* @param fileName 文件上传至七牛云空间的名称
* @throws IOException
*/
public void upload(String filePath, String fileName) {
try {
//调用put方法上传
Response res = uploadManager.put(filePath, fileName, getUpToken(fileName));
//打印返回的信息
System.out.println(res.bodyString());
} catch (QiniuException e) {
Response r = e.response;
// 请求失败时打印的异常的信息
System.out.println(r.toString());
try {
//响应的文本信息
System.out.println(r.bodyString());
} catch (QiniuException e1) {
//ignore
e.printStackTrace();
}
}
}
/**
* 获取下载文件路径,即:donwloadUrl
*
* @return
*/
public String getDownloadUrl(String targetUrl) {
String downloadUrl = auth.privateDownloadUrl(targetUrl);
return downloadUrl;
}
/**
* 文件下载
*
* @param targetUrl
*/
public void download(String targetUrl) {
//获取downloadUrl
String downloadUrl = getDownloadUrl(targetUrl);
//本地保存路径
String filePath = "E:\\chen\\";
download(downloadUrl, filePath);
}
/**
* 通过发送http get 请求获取文件资源
*
* @param url
* @param filepath
* @return
*/
private static void download(String url, String filepath) {
OkHttpClient client = new OkHttpClient();
System.out.println(url);
Request req = new Request.Builder().url(url).build();
com.squareup.okhttp.Response resp = null;
try {
resp = client.newCall(req).execute();
System.out.println(resp.isSuccessful());
if (resp.isSuccessful()) {
ResponseBody body = resp.body();
InputStream is = body.byteStream();
byte[] data = readInputStream(is);
//判断文件夹是否存在,不存在则创建
File file = new File(filepath);
if (!file.exists() && !file.isDirectory()) {
System.out.println("===文件夹不存在===创建====");
file.mkdir();
}
File imgFile = new File(filepath + "888.jpg");
FileOutputStream fops = new FileOutputStream(imgFile);
fops.write(data);
fops.close();
}
} catch (IOException e) {
e.printStackTrace();
System.out.println("Unexpected code " + resp);
}
}
/**
* 读取字节输入流内容
*
* @param is
* @return
*/
private static byte[] readInputStream(InputStream is) {
ByteArrayOutputStream writer = new ByteArrayOutputStream();
byte[] buff = new byte[1024 * 2];
int len = 0;
try {
while ((len = is.read(buff)) != -1) {
writer.write(buff, 0, len);
}
is.close();
} catch (IOException e) {
e.printStackTrace();
}
return writer.toByteArray();
}
public static void main(String args[]) throws IOException {
String fileName = "xiao.jpg";
//上传文件的路径
String FilePath = "C:\\Users\\ChenXiao\\Pictures\\Saved Pictures\\xiao.jpg"; //本地要上传文件路径
// new QiniuUtil().upload(FilePath,fileName);
//构造私有空间的需要生成的下载的链接;
//格式: http://私有空间绑定的域名/空间下的文件名
String targetUrl = "http://私有空间绑定的域名/下载文件名称.后缀"
new QiniuUtil().download(targetUrl);
}
}
4、在七牛云中拿到ACCESS_KEY和SECRET_KEY值和私有空间绑定的域名如下图所示(注:在创建'私有空间'的时候我是创建在'华东地区'的,不知为何建在'华南地区'竟然上传失败!!!并未去深究缘由,有了解缘由的可在底下留言告知下,谢谢!!!)


5、至此,七牛云进行文件的存储和下载已然完成,在上述代码和图片中若是存在问题,请指出,谢谢!!!
Java 七牛云存储与下载的更多相关文章
- ueditor上传图片到七牛云存储(form api,java)
转:http://my.oschina.net/duoduo3369/blog/174655 ueditor上传图片到七牛云存储 ueditor结合七牛传图片 七牛的试炼 开发前的准备与注意事项说明 ...
- PHP使用七牛云存储之图片的上传、下载、303重定向教程,CI框架实例
网上关于七牛云存储的教程除了官网上的API文档,其他的资料太少了.研究了下API之后,现在已经能实现图片的上传和下载及上传之后的重定向. http://blog.csdn.net/cqcre/arti ...
- 七牛云存储 qiniu 域名 回收 文件上传 备份 下载 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- JavaWeb结合七牛云存储搭建个人相册服务
JavaWeb结合七牛云存储搭建个人相册服务 一.引言1. 课程概述 相信很多人都知道网站一般会有很多图片,对于小型网站来说,图片放在网站服务器上不算什么,但当图片数量很大时,会造成服务器很臃肿,相应 ...
- 《介绍一款开源的类Excel电子表格软件》续:七牛云存储实战(C#)
两个月前的发布的博客<介绍一款开源的类Excel电子表格软件>引起了热议:在博客园有近2000个View.超过20个评论. 同时有热心读者电话咨询如何能够在SpreadDesing中实现存 ...
- 为七牛云存储开发的PHP PEAR 包:Services_Qiniu
七牛云存储Qiniu Resource (Cloud) Storage:用于存储图片.apk等静态资源. 优点: 1.使用七牛带宽和CDN,速度快,不占用开发者服务器. 2.支持图片任意格式.任意分辨 ...
- CodeIgniter - 集成七牛云存储
最近有一个项目需要集成七牛云存储的图片存储和调用功能,程序是基于CodeIgniter2.1.3的PHP框架.刚拿到手完全无从下手的感觉,因为像框架这种东西,想从官方的PHPSDK集成进去,需要改动很 ...
- 七牛云存储Python SDK使用教程 - 上传策略详解
文 七牛云存储Python SDK使用教程 - 上传策略详解 七牛云存储 python-sdk 七牛云存储教程 jemygraw 2015年01月04日发布 推荐 1 推荐 收藏 2 收藏,2.7k ...
- 【UEditor】远程上传图片到【七牛云存储】
杂谈:最近在玩一个第三方的微信开发平台,里面的图片都是上传到[七牛云存储]的,用了一下非常的好用,支持各种语言,SDK齐全.支持全分布式系统架构以及存储技术和数据加速,于是决定将网站的图片都存储到七牛 ...
随机推荐
- java上传1t文件
我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用.此控件PC全平台支持包括mac,linux系统的文件上传,文章末尾将附上控件下载与教程链接 ...
- 后缀数组 1031: [JSOI2007]字符加密Cipher
/*1031: [JSOI2007]字符加密Cipher Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 4926 Solved: 2020[Submit ...
- start django project
1.django-admin startproject helloword 创建项目helloword 2.开始一个app,写一个hello worldpython manage.py startap ...
- 特征工程学习01-sklearn单机特征工程
特征工程学习01-sklearn单机特征工程 小书匠 kindle 0.数据的导入 from sklearn.datasets import load_iris #导入IRIS数据集 iris= ...
- NCNN使用总结
目录 NCNN简介 NCNN注意事项 NCNN使用心得 小技巧 小想法 NCNN简介 ncnn 是一个为手机端极致优化的高性能神经网络前向计算框架.ncnn 从设计之初深刻考虑手机端的部署和使用.无第 ...
- arch linux下网易云音乐运行没反应,只能使用root用户运行
本文通过MetaWeblog自动发布,原文及更新链接:https://extendswind.top/posts/technical/netease_music_can_not_open 最近打开网易 ...
- Python性能监控
profiler是一个程序,用来描述运行时的程序性能,并且从不同方面提供统计数据加以表述.Python中含有3个模块提供这样的功能,分别是cProfile, profile和pstats.这些分析器提 ...
- JVM 堆内存溢出后,其他线程是否可继续工作
最近网上出现一个美团面试题:“一个线程OOM后,其他线程还能运行吗?”.我看网上出现了很多不靠谱的答案.这道题其实很有难度,涉及的知识点有jvm内存分配.作用域.gc等,不是简单的是与否的问题. 由于 ...
- git常见问题之git pull时Please specify which branch you want to merge with.
$ git pull时遇到如下提示 $ git pull warning: no common commits remote: Counting objects: 5, done. remote: C ...
- 动画之Evaluator
Evaluator就是通过监听器拿到当前动画对对应的具体数值,作用在于从插值器返回的数值进行转换成对应的数值.简单来说就是转换器 Evaluator返回值的类型更加动画中值决定的,所以在使用的时候注意 ...