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();
}
}
@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 ));
}
文件外链的格式为
domain你可以登录https://portal.qiniu.com
然后在 空间设置 -> 域名管理 中查看
key 为空间中的文件名