這是我參與8月更文挑戰的第3天,活動詳情查看:8月更文挑戰javascript
開發者使用uniCloud
的雲存儲,無需再像傳統模式那樣單獨去購買存儲空間、CDN映射、流量採購等;uniCloud
雲存儲支持文本、圖片和其餘由用戶生成的內容存儲到雲端,並提供CDN下載地址,java
開發者可在客戶端使用雲存儲API,文件上傳成功後,系統會自動生成一個資源連接,開發者需保存該文件地址供後續業務下載使用。小程序
即將支持雲函數中使用雲存儲功能。微信小程序
上傳文件到雲存儲,阿里雲單文件大小限制爲100M,騰訊雲單文件最大爲5G數組
Object objectpromise
參數名 | 類型 | 必填 | 默認值 | 說明 | 平臺差別說明 |
---|---|---|---|---|---|
filePath | String | 是 | - | 要上傳的文件對象 | - |
字段 | 類型 | 說明 |
---|---|---|
code | String | 狀態碼,操做成功則不返回 |
message | String | 錯誤描述 |
fileID | String | 文件惟一 ID,用來訪問文件,建議存儲起來 |
requestId | String | 請求序列號,用於錯誤排查 |
uni.chooseImage({
count: 1,
success(res) {
console.log(res);
if (res.tempFilePaths.length > 0) {
let filePath = res.tempFilePaths[0]
//進行上傳操做
// promise
const result = await uniCloud.uploadFile({
filePath: filePath
});
// callback
uniCloud.uploadFile({
filePath: filePath
},
success() {},
fail() {},
complete() {}
});
}
}
});
複製代碼
Tips微信
刪除雲端文件markdown
Object objectapp
字段 | 類型 | 必填 | 說明 |
---|---|---|---|
fileList | .String | 是 | 要刪除的文件 ID 組成的數組,阿里雲只支持一次刪除一個文件 |
字段 | 類型 | 必填 | 說明 |
---|---|---|---|
code | String | 否 | 狀態碼,操做成功則不返回 |
message | String | 否 | 錯誤描述 |
fileList | .Object | 否 | 刪除結果組成的數組 |
requestId | String | 否 | 請求序列號,用於錯誤排查 |
fileList定義框架
字段 | 類型 | 必填 | 說明 |
---|---|---|---|
code | String | 否 | 刪除結果,成功爲 SUCCESS |
fileID | String | 是 | 文件 ID |
// promise
uniCloud
.deleteFile({
fileList: ['cloud://jimmytest-088bef/1534576354877.jpg']
})
.then(res => {});
// callback
uniCloud.deleteFile(
{
fileList: ['cloud://jimmytest-088bef/1534576354877.jpg'],
success(){},
fail(){},
complete(){}
}
);
複製代碼
開發者在雲函數內也可使用console.log
、console.info
、console.warn
、console.error
四種方式打印日誌。
HBuilderX中查看日誌的教程在 快速上手章節
高級日誌包括如下四種,以此方式輸出的日誌會持久化存儲(有效期30天)。
接口 | 描述 |
---|---|
uniCloud.logger.log | 以 log 日誌等級輸出日誌 |
uniCloud.logger.info | 以 info 日誌等級輸出日誌 |
uniCloud.logger.warn | 以 warn 日誌等級輸出日誌 |
uniCloud.logger.error | 以 error 日誌等級輸出日誌 |
若項目僅鏈接一個服務空間,uniCloud
框架會自動綁定服務空間,開發者無需手動作初始化工做(可理解爲類調用)。只有存在多服務空間時,才須要根據本文進行初始化
//項目僅鏈接了一個服務空間,則無需初始化//可經過uniCloud直接調用雲開發的APIuniCloud.callFunction()uniCloud.uploadFile()
複製代碼
若項目鏈接了多個服務空間,uniCloud
沒法自動綁定;需開發者在客戶端代碼中,手動調用初始化方法uniCloud.init
,綁定服務空間。
uniCloud.init
方法會返回一個uniCloud
實例,以後雲開發API的調用都須要經過該uniCloud
實例發起(相似實例調用)。
uniCloud.init
方法定義以下:
function init(options):uniCloud
複製代碼
uniCloud.init
方法接受一個options
參數,返回uniCloud
實例,uniCloud
實例可調用雲函數、雲存儲相關API。
options 參數說明
參數名 | 類型 | 必填 | 默認值 | 說明 |
---|---|---|---|---|
provider | String | 是 | - | 目前僅支持aliyun |
spaceId | String | 是 | - | 服務空間ID,注意是服務空間ID,不是服務空間名稱 |
clientSecret | String | 是 | - | 能夠在uniCloud控制檯服務空間列表中查看 |
示例代碼
//開發者建立了多個服務空間,則需手動初始化
const myCloud = uniCloud.init({
provider: 'aliyun',
spaceId: 'xxxx-yyy',
clientSecret: 'xxxx'
});
//經過uniCloud實例調用雲開發的API
myCloud.callFunction()
myCloud.uploadFile()
複製代碼