1. 程式人生 > >雲端儲存Java客戶端上傳檔案

雲端儲存Java客戶端上傳檔案

什麼是雲端儲存

準確來說應該稱為物件儲存。雲端儲存是比較流行的一種雲服務,提供圖片、視訊等檔案的儲存服務。具有代表性的產品有:七牛雲、阿里雲物件儲存OSS、又拍雲、騰訊雲物件儲存服務COS。

雲端儲存能做什麼

打個比方,檔案上傳這種需求在開發中會經常遇到,例如開發一個BBS,使用者會在帖子中插入圖片、使用者上傳頭像、上傳視訊、上傳附件等。

碰到此類需求,傳統的做法是自備伺服器和儲存,將上傳的檔案存入自己的儲存上,再來個Web伺服器提供對外訪問。

使用傳統方式的缺點也很明顯:

  1. 比如磁碟壞了怎麼辦,這樣就要考慮備份;
  2. 要考慮伺服器穩定性,安全性;
  3. 伺服器訪問速度慢,要考慮使用CDN;
  4. 某些高階功能需要自己開發,例如圖片壓縮、圖片裁剪這類需求;
  5. 所說的硬體成本、人力成本等,要知道招個工程師是很貴的。

雲端儲存很大程度上解決了以上的問題。大部分雲端儲存都有提供CDN和圖片相關API服務(壓縮、裁剪等),並提供各種語言的SDK來方便接入。只需要簡單的幾行程式碼,就可以將各種檔案上傳儲存到雲端儲存上,通過HTTP地址可以直接訪問,這些檔案不需要自己去管理。

但是既然是雲服務,肯定是需要收費的,好在大部分雲端儲存服務商都會提供一個免費的額度(例如限定10G儲存空間和每月10G流量)給使用者試用,對於個人試用或者訪問量小的網際網路應用一般都是足夠的了。

Java雲端儲存客戶端

七牛雲

文件

檔案上傳程式碼

String httpBase = "http://o8sw7lrki.bkt.clouddn.com/"; // 雲端儲存HTTP地址
String target = "your/path/test.png"; // 上傳到雲端儲存的目標路徑
String filePath = "/Users/wucao/Desktop/test.png"; // 本地檔案

QiniuCloudStorageService cloudStorageService = new QiniuCloudStorageService();
cloudStorageService.setAccessKey("<your accessKey>"
); cloudStorageService.setSecretKey("<your secretKey>"); cloudStorageService.setBucket("<your bucket>"); cloudStorageService.upload(new File(filePath), target); System.out.println("檔案HTTP地址: " + httpBase + target);

使用Spring

<bean class="com.xxg.cloudstorage.QiniuCloudStorageService">
    <property name="accessKey" value="<your accessKey>" />
    <property name="secretKey" value="<your secretKey>" />
    <property name="bucket" value="<your bucket>" />
</bean>

阿里雲物件儲存OSS

文件

檔案上傳程式碼

String httpBase = "http://vsgames.oss-cn-beijing.aliyuncs.com/"; // 雲端儲存HTTP地址
String target = "your/path/test.png"; // 上傳到雲端儲存的目標路徑
String filePath = "/Users/wucao/Desktop/test.png"; // 本地檔案

AliyunCloudStorageService cloudStorageService = new AliyunCloudStorageService();
cloudStorageService.setEndpoint("<your endpoint>"); // 根據文件配置: https://help.aliyun.com/document_detail/32010.html?spm=5176.doc32010.6.304.uVKI6q
cloudStorageService.setAccessKeyId("<your endpoint>");
cloudStorageService.setAccessKeySecret("<your accessKeySecret>");
cloudStorageService.setBucket("<your bucket>");

cloudStorageService.upload(new File(filePath), target);
System.out.println("檔案HTTP地址: " + httpBase + target);

使用Spring

<bean class="com.xxg.cloudstorage.AliyunCloudStorageService">
    <property name="endpoint" value="<your endpoint>" />
    <property name="accessKeyId" value="<your endpoint>" />
    <property name="accessKeySecret" value="<your accessKeySecret>" />
    <property name="bucket" value="<your bucket>" />
</bean>

又拍雲

文件

檔案上傳程式碼

String httpBase = "http://wyuca.b0.upaiyun.com/"; // 雲端儲存HTTP地址
String target = "your/path/test.png"; // 上傳到雲端儲存的目標路徑
String filePath = "/Users/wucao/Desktop/test.png"; // 本地檔案

UpyunCloudStorageService cloudStorageService = new UpyunCloudStorageService();
cloudStorageService.setUsername("<操作員使用者名稱>");
cloudStorageService.setPassword("<操作員密碼>");
cloudStorageService.setBucket("<your bucket>");

cloudStorageService.upload(new File(filePath), target);
System.out.println("檔案HTTP地址: " + httpBase + target);

使用Spring

<bean class="com.xxg.cloudstorage.UpyunCloudStorageService">
    <property name="username" value="<操作員使用者名稱>" />
    <property name="password" value="<操作員密碼>" />
    <property name="bucket" value="<your bucket>" />
</bean>

騰訊雲物件儲存服務COS

文件

檔案上傳程式碼

String httpBase = "http://xxg-10066313.cos.myqcloud.com"; // 雲端儲存HTTP地址
String target = "/your/path/test.png"; // 上傳到雲端儲存的目標路徑, 騰訊雲必須是'/'開頭
String filePath = "/Users/wucao/Desktop/test.png"; // 本地檔案

QcloudCloudStorageService cloudStorageService = new QcloudCloudStorageService();
cloudStorageService.setAppId(<your appId>);
cloudStorageService.setSecretId("<your secretId>");
cloudStorageService.setSecretKey("<your secretKey>");
cloudStorageService.setBucket("<your bucket>");

cloudStorageService.upload(new File(filePath), target);
System.out.println("檔案HTTP地址: " + httpBase + target);

使用Spring

<bean class="com.xxg.cloudstorage.QcloudCloudStorageService">
    <property name="appId" value="<your appId>" />
    <property name="secretId" value="<your secretId>" />
    <property name="secretKey" value="<your secretKey>" />
    <property name="bucket" value="<your bucket>" />
</bean>