名詞解釋
AliOS Things: 阿里雲智能IoT團隊自研的物聯網操作系統
HaaS:全稱是Hardware as a Service,阿里雲智能IoT團隊基於AliOS Things系統推出的硬件即服務
HaaS UI:全稱是Hardware as a Service User Interface,是源自AliOS Things操作系統上的一套應用&圖形解決方案,支持C/C++和 JS兩種開發語言
1、 File JSAPI簡介
File JSAPI是HaaS UI提供的一個輕量級文件接口,特別適用於存儲小程序運行所需的文件,如文本、圖片、視頻等資源文件,這些文件都可以通過File JSAPI來存取。
File JSAPI的作用域為當前小程序應用,包含的接口如下:
接口宿主 | JSAPI | 調用方法 | 接口功能 |
---|---|---|---|
file | saveFile | $falcon.jsapi.file.saveFile({apFilePath: 'xxx'}) | 文件管理 |
getSavedFileInfo | $falcon.jsapi.file.getSavedFileInfo({apFilePath: 'xxx'}) | ||
getFileInfo | $falcon.jsapi.file.getFileInfo({apFilePath: 'xxx'}) | ||
getSavedFileList | $falcon.jsapi.file.getSavedFileList({}) | ||
removeSavedFile | $falcon.jsapi.file.removeSavedFile({apFilePath: 'xxx'}) |
1.1、 file.saveFile
file.saveFile是保存文件到本地(本地文件大小總容量限制:10 MB)的 API。
調用 my.saveFile 成功後,可在"MINIAPP_DATAROOT file/appid/"路徑下查看保存的文件,其中appid是小程序的id。
入參
Object 類型,屬性如下:
屬性 | 類型 | 必填 | 描述 |
---|---|---|---|
apFilePath | String | 是 | 文件路徑。 |
callback | Function | 否 | 回調函數,包含result參數。 |
示例代碼
file.saveFile({
apFilePath: 'd:\\demo.jpg',
}, result => {console.log(result)});
success 回調函數
屬性 | 類型 | 描述 |
---|---|---|
apFilePath | String | 文件保存路徑。 |
1.2、 file.getSavedFileInfo
file.getSavedFileInfo 是獲取"MINIAPP_DATAROOT file/appid/"路徑下保存的所有文件信息的 API,其中appid是小程序的id。
入參
入參為Object類型,屬性如下:
屬性 | 類型 | 必填 | 描述 |
---|---|---|---|
apFilePath | String | 是 | 文件路徑。 |
callback | Function | 否 | 回調函數,包含result參數。 |
示例代碼
file.saveFile({
apFilePath: 'd:\\demo.jpg',
}, result => {
result && !result.error && file.getSavedFileInfo({
apFilePath: result["apFilePath"],
}, result => {console.log(result)});
});
1.3、file.getFileInfo
getFileInfo 是獲取文件信息的 API。
入參
入參為Object類型,屬性如下:
屬性 | 類型 | 必填 | 描述 |
---|---|---|---|
apFilePath | String | 是 | 文件路徑。 |
callback | Function | 否 | 回調函數,包含result參數。 |
示例代碼
file.getFileInfo({
apFilePath: "/data/mini_app/file/0000000000000001/demo.jpg",
}, result => {console.log(result)});
success 回調函數
入參為Object類型,屬性如下
名稱 | 類型 | 描述 |
---|---|---|
size | Number | 文件大小。 |
digest | String | 摘要結果。 |
1.4、 file.getSavedFileList
file.getSavedFileList 是獲取保存的所有文件信息的 API。
入參
Object 類型,屬性如下:
屬性 | 類型 | 必填 | 描述 |
---|---|---|---|
appId | String | 否 | 小程序的 appId。 |
callback | Function | 否 | 回調函數,包含result參數。 |
示例代碼
file.getSavedFileList({
}, result => {
result && !result.error && console.log(result);
});
success 回調函數
屬性 | 類型 | 描述 |
---|---|---|
fileList | List | 文件列表。 |
column1 | column2 | column3 |
column1 | column2 | column3 |
File 對象屬性
屬性 | 類型 | 描述 |
---|---|---|
size | Number | 文件大小。 |
createTime | Number | 創建時間。 |
apFilePath | String | 文件路徑。 |
1.5、 file.removeSavedFile
file.removeSavedFile 是刪除某個保存的文件的 API。
入參
Object 類型,屬性如下:
屬性 | 類型 | 必填 | 描述 |
---|---|---|---|
apFilePath | String | 是 | 文件路徑。 |
示例代碼
file.getSavedFileList({
}, result => {
result && !result.error && file.removeSavedFile({
apFilePath: result.fileList[0].apFilePath,
}, result => {console.log(result)});
});
success 回調函數
屬性 | 類型 | 描述 |
---|---|---|
apFilePath | String | 被刪除文件的路徑。 |
2、File JSAPI使用教程
2.1、 file對象獲取
在使用File JSAPI前,需要先獲取$falcon.jsapi的file對象,所有的接口都是通過file對象進行調用的。
const storage = $falcon.jsapi.file;
2.2、 文件存儲
文件存儲操作需要通過步驟1獲取的file對象來進行,具體可通過file.saveFile來實現鍵值對參數的存儲,可存儲的文件類型有txt、png、jpg、zip等常見類型。
文件類型/文件操作 | 寫入操作 |
---|---|
txt | 支持 |
png | 支持 |
jpg | 支持 |
zip | 支持 |
... | 支持 |
在進行文件存儲時,有兩種方式,一種是同步存儲,另一種是異步存儲。同步存儲直接返回存儲結果,異步存儲需要在async函數中操作,通過await返回存儲結果。
接口名/參數列表 | 入參1 | 入參2 |
---|---|---|
saveFile | apFilePath : 'xxx' | (result) => { console.log(result); } |
同步存儲方式:
const file = $falcon.jsapi.file;
file.saveFile(
{
apFilePath: "d:\\demo.jpg",
},
(result) => {
console.log(result);
}
);
異步存儲方式:
const file = $falcon.jsapi.file;
let result = await storage.setStorage({
key: 'key', // key
data: 'storage content', // value
});
console.log(result);
2.3、 其他文件操作
其他文件操作也需要通過步驟1獲取的file對象來進行,包含getSavedFileInfo、getFileInfo、getSavedFileList和removeSavedFile,也支持同步和異步兩種操作。
3、 File JSAPI調用示例
本節將以保存一張圖片為示例,介紹如何去調用File JSAPI,具體包含保存文件、獲取保存的文件信息、獲取文件信息、獲取保存的文件列表和刪除文件。調用saveFile(),就可將文件存儲到當前小程序的私有文件路徑下,以供小程序使用。文件使用完畢後,調用removeSavedFile(),就可將之刪除。
3.1、 保存文件
從給定apFilePath中獲取要保存的文件路徑,並調用saveFile()將之保存到小程序的私有文件路徑下:
const file = $falcon.jsapi.file;
file.saveFile(
{
apFilePath: "d:\\demo.jpg",
},
(result) => {
console.log(result);
}
);
}
3.2、 獲取保存的文件信息
要獲取某個已保存的文件的信息,可通過調用getSavedFileInfo()實現:
getSavedFileInfo() {
const file = $falcon.jsapi.file;
file.saveFile(
{
apFilePath: "d:\\demo.jpg",
},
(result) => {
result &&
!result.error &&
file.getSavedFileInfo(
{
apFilePath: result["apFilePath"],
},
(result) => {
console.log(result);
}
);
}
);
}
3.3、 獲取文件信息
要獲取某個文件的信息,可通過調用getFileInfo()實現:
const file = $falcon.jsapi.file;
file.getFileInfo(
{
apFilePath: "d:\\demo.jpg",
},
(result) => {
console.log(result);
}
);
}
3.4、 獲取保存的文件列表
要獲取已保存的文件的列表,可通過調用getSavedFileList()實現:
const file = $falcon.jsapi.file;
file.getSavedFileList({}, (result) => {
result && !result.error && console.log(result);
});
}
3.5、 刪除文件
刪除通過saveFile()保存的文件,可以調用removeSavedFile()實現:
const file = $falcon.jsapi.file;
file.getSavedFileList({}, (result) => {
result &&
!result.error &&
file.removeSavedFile(
{
apFilePath: result.fileList[0].apFilePath,
},
(result) => {
console.log(result);
}
);
});
}
4、開發者技術支持
如需更多技術支持,可加入釘釘開發者群,或者關注微信公眾號
更多技術與解決方案介紹,請訪問阿里雲AIoT首頁https://iot.aliyun.com/