java 上传文件到七牛云存储的demo

时间:2022-08-23 16:29:07

maven 


   引用 网上maven服务器 以及最新版的maven依赖

<repositories>
<repository>
<id>public</id>
<!-- <url>http://192.168.2.115:8081/nexus/content/groups/public/</url> -->
<url>https://repo.maven.apache.org/maven2/</url>
</repository>
</repositories>
 <dependency>    <groupId>com.qiniu</groupId>    <artifactId>qiniu-java-sdk</artifactId>    <version>7.1.0</version></dependency>

java 代码

import java.io.IOException;

import com.qiniu.common.QiniuException;
import com.qiniu.http.Response;
import com.qiniu.storage.UploadManager;
import com.qiniu.util.Auth;

public class QiniuUtil {

//设置好账号的ACCESS_KEY和SECRET_KEY
String ACCESS_KEY = "Bq**********************lSc_pZUZ_"; //这两个登录七牛 账号里面可以找到
String SECRET_KEY = "Dyag******************";

//要上传的空间
String bucketname = "auto***file"; //对应要上传到七牛上 你的那个路径(自己建文件夹 注意设置公开)
//上传到七牛后保存的文件名
String key = "daimo6.png";
//上传文件的路径
String FilePath = "d:\\daimao5.png"; //本地要上传文件路径

//密钥配置
Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
//创建上传对象
UploadManager uploadManager = new UploadManager();

//简单上传,使用默认策略,只需要设置上传的空间名就可以了
public String getUpToken(){
return auth.uploadToken(bucketname);
}
//普通上传
public void upload() throws IOException{
try {
//调用put方法上传
Response res = uploadManager.put(FilePath, key, getUpToken());
//打印返回的信息
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
}
}
}

public static void main(String args[]) throws IOException{
new QiniuUtil().upload();
}

}



service调用

@RequestMapping(value = "list", method = RequestMethod.GET)
public ModelAndView list(SearchVO vo, Integer sortType , HttpServletRequest request,@Language String language) throws Exception {


new QiniuUtil().upload();
}

重要的是如何得到 上传后的文件路径

每个账户 对应一个 外链的前缀 都是一样的 比如我的

http://7xuac******n.com/   看下你上传的文件可以发现这个规律,然后后面加上你传的文件名字就能对应你上传文件的外网地址了

如果文件有空格 和  中文名称   空格可以替换掉""    中文名称文件地址略微麻烦点, 我还在想,不知道七牛提供了api查询某个文件的网址不


另外 


这个函数修改下 就是 覆盖上传 替换掉原来文件

  public String getUpToken(){
// return auth.uploadToken(bucketname);
//<bucket>:<key>,表示只允许用户上传指定key的文件。在这种格式下文件默认允许“修改”,已存在同名资源则会被本次覆盖。
//如果希望只能上传指定key的文件,并且不允许修改,那么可以将下面的 insertOnly 属性值设为 1。
//第三个参数是token的过期时间
return auth.uploadToken(bucketname, key, 3600, new StringMap().put("insertOnly", 0 ));
}


文件外链的格式为

http://domain/key

domain你可以登录https://portal.qiniu.com
然后在 空间设置 -> 域名管理 中查看

key 为空间中的文件名