最近研究了Ucloud的对象存储,使用起来很简单,总结一下。
1、配置UFile
官网上下载下来的SDK,jar包和测试类都包含在其中,结合到项目中,有重复的jar包,要选一留下,不要都留。
配置文档的配置:
UCloudPublicKey=HLLK79ho09023MOXPS90hioisfqm230nalHSOP2==
UCloudPrivateKey=2c07ab4ec43ecga346347oisfqm2DLSA0js2DLSkfJSo
ProxySuffix=.cn-bj.ufileos.com
DownloadProxySuffix=.ufile.ucloud.com.cn
以上四个是申请开通后可生成的
bucketName=testUfile //是申请开通后自己命名的存储空间 --的名字
2、UFilePut(put方法上传文件)
基本参数的赋值
String bucketName = "testUfile "; //存储空间的名字(手动写,或直接从配置文件中读取),以便于test1文件找到将要存储的空间名
String key = "test1.swf";//存储时,想把文件命名成什么
String filePath = "C:/Users/Administrator/Desktop/A.swf"; //文件上传前,存储在哪里。
实际的web开发时,无法通过前台页面获取到客户端文件存储的路径。
我采取的办法是,先上传到云端存储到指定位置,然后获取到云端的保存路径,通过云端再讲文件上传到UFile的存储空间。
上传时要注意的是,如果“test1.swf”,在testUfile中存在,将会替换原test1.swf内容,不会存储两个test1.swf文件。
以上均注意后,直接把Ufile封装好的SDK 中的Put上传拿来用即可。
3、UFileGet(下载文件)
基本参数的赋值
4.预览文件
对象存储的预览,是可以调用方法,直接返回url路径,通过此路径可以预览文件。(只能预览浏览器可以直接打开的文件,例如:视频或图片)
public class UFileDownloadUrlUtil {
public String getUrl(String theName){//通过调用getUrl方法,传入存储名字作为参数,即可得到url
UseConfig use = new UseConfig();
UFileConfig.getInstance().setUcloudPublicKey(use.getUCloudPublicKey());
UFileConfig.getInstance().setUcloudPrivateKey(use.getUCloudPrivateKey());
UFileConfig.getInstance().setProxySuffix(use.getProxySuffix());
UFileConfig.getInstance().setDownloadProxySuffix(use.getDownloadProxySuffix());
UFileRequest request = new UFileRequest();
request.setBucketName(use.getBucketName());
request.setKey(theName);
System.out.println("DownloadUrl Test BEGIN ...");
// url链接的有效期为一天,从当前unix时间戳开始,86400秒后结束
boolean isPrivate = true;
UFileClient ufileClient = new UFileClient();
int ttl = 21600;
/*
* 针对私有的Bucket,为了防止盗链,建议生成的链接的有效期为ttl > 0; 如果 ttl == 0, 那么生成的链接永久有效
*/
String url = downloadUrl(ufileClient, request, ttl, isPrivate);
System.out.println(url);
// downloadFileFromUrl(url, saveAsPath);
System.out.println("DownloadUrl Test END ...\n\n");
return url;
}
private static void downloadFileFromUrl(String urlStr, String saveAsPath) {
URL url;
InputStream inputStream = null;
OutputStream outputStream = null;
try {
url = new URL(urlStr);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
inputStream = conn.getInputStream();
outputStream = new BufferedOutputStream(new FileOutputStream(
saveAsPath));
int bufSize = 1024 * 4;
byte[] buffer = new byte[bufSize];
int bytesRead;
while ((bytesRead = inputStream.read(buffer)) > 0) {
outputStream.write(buffer, 0, bytesRead);
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (inputStream != null) {
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (outputStream != null) {
try {
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
private static String downloadUrl(UFileClient ufileClient,
UFileRequest request, int ttl, boolean isPrivate) {
DownloadUrl downloadUrl = new DownloadUrl();
return downloadUrl.getUrl(ufileClient, request, ttl, isPrivate);
}
}