一、准备工作
1.七牛云注册
2.新建存储空间
3.获取自己的AK,SK:
二、java操作七牛云对象存储
2.1.pom.xml引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.8</version>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.5</version>
</dependency>
<!--七牛云上传-->
<dependency>
<groupId>com.qiniu</groupId>
<artifactId>qiniu-java-sdk</artifactId>
<version>7.1.1</version>
</dependency>
2.2.application.properties
#端口设置
server.port=8080
#上传文件大小设置
spring.servlet.multipart.max-file-size=512MB
spring.servlet.multipart.max-request-size=1024MB
2.3.上传删除具体代码(工具类)
package com.qiniucloud.upload.utill;
import com.qiniu.common.QiniuException;
import com.qiniu.http.Response;
import com.qiniu.storage.BucketManager;
import com.qiniu.storage.UploadManager;
import com.qiniu.util.Auth;
import com.qiniu.util.Base64;
import com.qiniu.util.StringMap;
import com.qiniu.util.UrlSafeBase64;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import org.apache.commons.lang.StringUtils;
import java.io.IOException;
public class QiniuCloudUtil {
// 设置需要操作的账号的AK和SK
private static final String ACCESS_KEY = "***";
private static final String SECRET_KEY = "***";
// 要上传的空间
private static final String bucketname = "***";
// 密钥
private static final Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
//七牛云域名
private static final String DOMAIN = "http://*****/";
public String getUpToken() {
return auth.uploadToken(bucketname, null, 3600, new StringMap().put("insertOnly", 1));
}
// 普通上传
public String upload(String filePath, String fileName) throws IOException {
// 创建上传对象
UploadManager uploadManager = new UploadManager();
try {
// 调用put方法上传
String token = auth.uploadToken(bucketname);
if (StringUtils.isEmpty(token)) {
System.out.println("未获取到token,请重试!");
return null;
}
Response res = uploadManager.put(filePath, fileName, token);
// 打印返回的信息
System.out.println(res.bodyString());
if (res.isOK()) {
Ret ret = res.jsonToObject(Ret.class);
//如果不需要对图片进行样式处理,则使用以下方式即可
return DOMAIN + ret.key;
// return DOMAIN + ret.key + "?" + style;
}
} catch (QiniuException e) {
Response r = e.response;
// 请求失败时打印的异常的信息
System.out.println(r.toString());
try {
// 响应的文本信息
System.out.println(r.bodyString());
} catch (QiniuException e1) {
// ignore
}
}
return null;
}
//base64方式上传
public String put64image(byte[] base64, String key) throws Exception {
String file64 = Base64.encodeToString(base64, 0);
Integer l = base64.length;
String url = "http://upload.qiniu.com/putb64/" + l + "/key/" + UrlSafeBase64.encodeToString(key);
//非华东空间需要根据注意事项 1 修改上传域名
RequestBody rb = RequestBody.create(null, file64);
Request request = new Request.Builder().
url(url).
addHeader("Content-Type", "application/octet-stream")
.addHeader("Authorization", "UpToken " + getUpToken())
.post(rb).build();
//System.out.println(request.headers());
OkHttpClient client = new OkHttpClient();
okhttp3.Response response = client.newCall(request).execute();
System.out.println(response);
//如果不需要添加图片样式,使用以下方式
return DOMAIN + key;
// return DOMAIN + key + "?" + style;
}
// 普通删除(暂未使用以下方法,未测试)
public void delete(String key) throws IOException {
// 实例化一个BucketManager对象
BucketManager bucketManager = new BucketManager(auth);
// 此处的25是去掉:https://download.pnki.cn/,剩下的key就是图片在七牛云的名称
key = key.substring(25);
try {
// 调用delete方法移动文件
bucketManager.delete(bucketname, key);
} catch (QiniuException e) {
// 捕获异常信息
Response r = e.response;
System.out.println(r.toString());
}
}
class Ret {
public long fsize;
public String key;
public String hash;
public int width;
public int height;
}
}
2.4 controller
package com.qiniucloud.upload.controller;
import com.qiniucloud.upload.domain.Result;
import com.qiniucloud.upload.utill.FileName;
import com.qiniucloud.upload.utill.QiniuCloudUtil;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
/**
* @author lin
*/
@RestController
@RequestMapping("/ipa")
public class TestController {
/**
* 七牛云上传测试
*
* @param image
* @param request
* @return
*/
@ResponseBody
@RequestMapping(value = "/upload", method = RequestMethod.POST)
public Result uploadImg(@RequestParam MultipartFile image, HttpServletRequest request) {
if (image.isEmpty()) {
return Result.buildResult(400, "上传文件不能为空");
}
try {
byte[] bytes = image.getBytes();
//文件名
//String fileName = FileName.getFileName(image);
String fileName = UUID.randomUUID().toString().replace("-", "").toLowerCase();
//上传工具类
QiniuCloudUtil qiniuUtil = new QiniuCloudUtil();
try {
//使用base64方式上传到七牛云
String url = qiniuUtil.put64image(bytes, fileName);
return Result.buildResult(200, "文件上传成功", url);
} catch (Exception e) {
e.printStackTrace();
return Result.buildResult(500, "文件上传发生异常");
}
} catch (IOException e) {
return Result.buildResult(500, "文件上传发生异常");
}
}
}
附上项目源码:gitee