華為AppGallery Connect提供了一個雲存儲(CloudStorage)的服務,號稱提供了一個便捷的雲端存儲服務,應用開發者使用的時候,可以不用關注服務器的部署,直接使用就行。
這個服務近期上線了服務端NodeJS的SDK,我搶先體驗試用了一下。有興趣的也可以下載codelab研究一下。
1、環境與應用信息
版本名稱 | 集成環境-應用 | 測試設備 |
---|---|---|
cloudstorage-server": "1.0.0" | Window-Node-v14.15.0 npm v6.14.8 Visual Studio Code | PC |
環境:https://developer.huawei.com/consumer/cn/service/josp/agc/index.html
SDK版本:agconnect/cloudstorage-server": "1.0.0"
集成SDK命令:npm install --save @agconnect/cloudstorage-server
2、在AGC上開通雲存儲:
PS: 雲存儲服務目前還處於beta狀態,使用前應該發郵件去申請開通:
https://developer.huawei.com/consumer/cn/doc/development/AppGallery-connect-Guides/agc-cloudstorage-apply
在我的項目 下選擇你的開發項目,在構建下面,找到雲存儲服務,點擊開通:
沒有Android項目的話,可以先自己創建一個。
開通服務的時候,需要先配置存儲實例,這里按需配置就可以,我就隨便配置一個。
下一步,還需要配置安全策略,這里使用默認的安全策略就好:
PS:默認的情況是,只有經過身份認證的用戶才能進行讀寫。
3、安裝Node.js環境:
NodeJs的安裝是通用步驟,我這邊就不詳細描述,具體的安裝步驟,大家可以去網上自行搜索,我這就說幾個重點步驟
1、 下載並且安裝Window環境的Node.js安裝包:https://nodejs.org/en/download/
2、 安裝NodeJS的時候,會自動安裝對應的npm,安裝完成后,可以通過如下命令查看對應的版本號
3、 對於NodeJS代碼的開發,我習慣用的是VSCode, 大家也可以為了根據我這習慣,也安裝一個VScode。http://code.visualstudio.com/
4、 安裝好以后,再打我們的項目路徑,testNodeJSDemo,隨便創建創建一個js文件,寫幾個常規的輸出:
5、 在VSCode里面運行這個js文件:在VScode左側的控制台,選擇Run,然后點擊Run and Debug,運行的時候,選擇Node.js,然后就可以下方看到輸啦
4、SDK集成
1、打開命令行窗口,進入到項目目錄下,在該目錄下執行npm init命令創建package.json文件,參數使用默認的,一路回車即可,無需關注
2、執行如下命令,安裝CloudStorage的Server SDK的依賴
npm install --save @agconnect/cloudstorage-server
3、從AGC界面上下載下載Server SDK的認證憑據,並且把下載好的認證憑據放到剛才創建的項目路徑下:,如果沒有認證憑據,可以直接創建一個
5、功能開發
a) 初始化:
包含兩塊,一個是初始化Server SDk,一個是初始化Storage實例。
var { AGCClient, CredentialParser } = require("@agconnect/common-server");
var credential = CredentialParser.toCredential("./agc-apiclient-testnodejs.json");
AGCClient.initialize(credential);
const {StorageManagement} = require('@agconnect/cloudstorage-server');
b) 配置存儲實例
復制AGC界面上的項目桶名,然后執行如下代碼初始化
let bucketName = '9105385871708601205-ffeon'; // 配置AGC雲端的存儲實例
c) 上傳文件:
此處我默認上傳項目路徑下的test123.txt文件,你們使用的時候,也可以按需配置。
// uploadFile();
function uploadFile() {
const storage = new StorageManagement();
const bucket = storage.bucket(bucketName);
bucket.upload('./test123.txt')
.then(res => console.log(res))
.catch(err => console.log(err));
}
d) 下載文件
此處我默認下載雲端根目錄下的test123.txt文件,並且將下載好的本地文件,命名成test_download.txt你們使用的時候,也可以按需配置。
const fs = require('fs');
// downloadFile();
function downloadFile() {
const storage = new StorageManagement();
const bucket = storage.bucket(bucketName);
const remoteFile = bucket.file('test123.txt');
const localFile = './test_download.txt';
remoteFile.createReadStream()
.on('error', err => {
})
.on('end', () => {
})
.pipe(fs.createWriteStream(localFile))
}
f) 刪除文件
此處我默認刪除雲端根目錄下的test123.txt文件,你們使用的時候,也可以按需配置。
// deleteFile();
function deleteFile() {
const storage = new StorageManagement();
const bucket = storage.bucket(bucketName);
const file = bucket.file('test123.txt');
file.delete().then(res => {
}).catch(err => {
})
}
g) 例舉全部文件
此處我默認刪除雲端根目錄下的所有文件。
//getFileList();
function getFileList() {
const storage = new StorageManagement();
const bucket = storage.bucket(bucketName);
bucket.getFiles({delimiter: '/'}).then(res => {
console.log(res)
}).catch(err => {
console.log(err);
})
}
6、功能點驗證
1、驗證上傳功能:
取消uploadFile();方法前的注釋,然后在命令行窗口,執行node CloudStorage.js命令,進行文件的上傳。
上傳成功后,也可以AGC控制台上看到上傳的test123.txt文件。
2、驗證下載
刪除downloadFile();方法前的注釋,然后在命令行窗口,執行node CloudStorage.js命令,進行文件的下載:反饋如下,沒有任何提示
下載好以后,可以看到路徑下,已經有剛剛下載的test_download.txt文件
3、獲取文件列表
刪除 getFileList();方法前的注釋,然后在命令行窗口,執行node CloudStorage.js命令,查看根目錄下的所有文件。命令行窗口顯示如下:
顯示的文件,和AGC界面顯示的文件一致:
4、刪除文件:沒有提示
刪除 deleteFile ();方法前的注釋,然后在命令行窗口,執行node CloudStorage.js命令,進行文件的刪除:反饋如下,沒有任何提示
此時AGC界面上,test123.txt也同樣被刪除了。
7、總結
僅關注NodeJS的開發,就可以在服務端操作項目中的文件。再也不用為了服務器的搭建和運維擔心,省時省力。而且還提供了類似於管理員模式的web控制台,可以簡單直觀的對服務器上的文件進行管理。
這個雲存儲服務,除了最普通的上傳下載和刪除功能,還包括有列舉文件,設置元數據等功能,具體可以看官方文檔:
雲存儲服務開發指南:
雲存儲服務codelab:
https://developer.huawei.com/consumer/cn/codelab/CloudStorage-nodejs/index.html#0
原文鏈接:https://developer.huawei.com/consumer/cn/forum/topic/0204411103865560354?fid=0101271690375130218
原作者:Mayism