1、基于七牛云存储服务构建的应用,
基本架构
2、引入七牛jar包
<dependency>
<groupId>com.qiniu</groupId>
<artifactId>sdk</artifactId>
<version>6.1.0</version>
</dependency>
3、代码:
import com.qiniu.api.auth.AuthException;
import com.qiniu.api.auth.digest.Mac;
import com.qiniu.api.config.Config;
import com.qiniu.api.io.IoApi;
import com.qiniu.api.io.PutExtra;
import com.qiniu.api.io.PutRet;
import com.qiniu.api.rs.GetPolicy;
import com.qiniu.api.rs.PutPolicy;
import com.qiniu.api.rs.RSClient;
import com.qiniu.api.rs.URLUtils;
import org.json.JSONException;
import java.io.ByteArrayInputStream;
import java.io.File;
/**
* Created by shadow on 2015/11/28.
*
*/
public class QiniuServiceImpl {
private String bucketName;
private String domain;
public void setDomain(String domain) {
this.domain = domain;
}
public void setBucketName(String bucketName) {
this.bucketName = bucketName;
}
public void setAccessKey(String key) {
Config.ACCESS_KEY = key;
}
public void setSecretKey(String key) {
Config.SECRET_KEY = key;
}
public boolean uploadFile(String localFile) throws AuthException, JSONException {
File file = new File(localFile);
return uploadFile(file);
}
public boolean uploadFile(File file) throws AuthException, JSONException {
String uptoken = getUpToken();
PutExtra extra = new PutExtra();
PutRet ret = IoApi.putFile(uptoken, file.getName(), file.getAbsolutePath(), extra);
if (ret.ok()) {
return true;
} else {
return false;
}
}
/**
* 从 inputstream 中写入七牛
* @param key 文件名
* @param content 要写入的内容
* @return
* @throws AuthException
* @throws JSONException
*/
public boolean uploadFile(String key, String content) throws AuthException, JSONException {
ByteArrayInputStream inputStream = new ByteArrayInputStream(content.getBytes());
String uptoken = getUpToken();
PutExtra extra = new PutExtra();
PutRet ret = IoApi.Put(uptoken, key, inputStream, extra);
if (ret.ok()) {
return true;
} else {
return false;
}
}
public String getDownloadFileUrl(String filename) throws Exception {
Mac mac = getMac();
String baseUrl = URLUtils.makeBaseUrl(domain, filename);
GetPolicy getPolicy = new GetPolicy();
String downloadUrl = getPolicy.makeRequest(baseUrl, mac);
return downloadUrl;
}
public void deleteFile(String filename) {
Mac mac = getMac();
RSClient client = new RSClient(mac);
client.delete(domain, filename);
}
private String getUpToken() throws AuthException, JSONException {
Mac mac = getMac();
PutPolicy putPolicy = new PutPolicy(bucketName);
String uptoken = putPolicy.token(mac);
return uptoken;
}
private Mac getMac() {
Mac mac = new Mac(Config.ACCESS_KEY, Config.SECRET_KEY);
return mac;
}
}
4、测试
import com.qiniu.api.auth.AuthException;
import org.json.JSONException;
import org.junit.Before;
import org.junit.Test;
import java.io.File;
/**
* Created by shadow on 2015/11/29.
*/
public class QiniuTest {
private QiniuServiceImpl qiniuService = null;
@Test
@Before
public void init() {
qiniuService = new QiniuServiceImpl();
qiniuService.setAccessKey("***********");
qiniuService.setSecretKey("***********");
qiniuService.setBucketName("**********");
qiniuService.setDomain("***********");
}
@Test
public void testUpload() throws AuthException, JSONException {
File file = new File("C:/shadow.jpg");
qiniuService.uploadFile(file);
}
@Test
public void testDownloadFileUrl() throws Exception {
String filePath = qiniuService.getDownloadFileUrl("shadow.jpg");
System.out.println("file path == " + filePath);
}
}