HarmonyOS 鸿蒙Next 网络文件下载到公共目录示例
HarmonyOS 鸿蒙Next 网络文件下载到公共目录示例
HarmonyOS 网络文件下载到公共目录示例?
2 回复
// 将网络资源文件下载到应用文件目录并读取一段内容
import common from '@ohos.app.ability.common';
import fs from '@ohos.file.fs';
import request from '@ohos.request';
import { BusinessError } from '@ohos.base';
import buffer from '@ohos.buffer';
import { picker } from '@kit.CoreFileKit';
@Entry
@Component
struct Index {
build() {
Button().onClick(() => {
let context = getContext(this) as common.UIAbilityContext;
let filePath = context.filesDir + "/test.xlsx";
let url = "xxx.xlsx"
try {
request.downloadFile(context, {
url: url,
filePath: filePath
}).then((data: request.DownloadTask) => {
let downloadTask: request.DownloadTask = data;
downloadTask.on('complete', () => {
console.info('download complete');
let file = fs.openSync(filePath, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
let arrayBuffer = new ArrayBuffer(4096000);
let readLen = fs.readSync(file.fd, arrayBuffer);
let buf = buffer.from(arrayBuffer, 0, readLen);
console.info(`content of File: ${buf.toString()}`);
let writeLen = fs.writeSync(file.fd, arrayBuffer);
fs.closeSync(file);
const documentSaveOptions = new picker.DocumentSaveOptions(); // 创建文件管理器选项实例
// documentSaveOptions.newFileNames = ["1.xlsx"]; // 保存文件名(可选)
// documentSaveOptions.fileSuffixChoices = ['xlsx']; // 保存文件类型(可选)
let uris: Array<string> = [];
const documentViewPicker = new picker.DocumentViewPicker(); // 创建文件选择器实例
documentViewPicker.save(documentSaveOptions).then((documentSaveResult: Array<string>) => {
uris = documentSaveResult;
console.info('documentViewPicker.save to file succeed and uris are:' + uris);
let uri = uris[0];
let file2 = fs.openSync(uri, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
let writeLen2 = fs.writeSync(file2.fd, arrayBuffer);
fs.closeSync(file2);
}).catch((err: BusinessError) => {
console.error(`Invoke documentViewPicker.save failed, code is ${err.code}, message is ${err.message}`);
})
})
let failCallback = () => {
console.info('Download task fail.');
};
downloadTask.on('fail', failCallback);
}).catch((err: BusinessError) => {
console.error(`downLoadFileTask failed, code is ${err.code}, message is ${err.message}`);
});
} catch (error) {
console.error(`downLoadFileTask failed, code is ${error.code}, message is ${error.message}`);
}
})
}
}
针对HarmonyOS 鸿蒙Next网络文件下载到公共目录的需求,以下是一个示例说明:
在HarmonyOS中,将网络文件下载到公共目录通常涉及以下几个步骤:
- 获取公共目录路径:使用
ohos.file.environment
接口获取公共目录路径,如Download、Documents等。这需要确认设备支持SystemCapability.FileManagement.File.Environment.FolderObtain
系统能力。 - 申请权限:若需访问公共目录,需申请对应的公共目录访问权限,如
ohos.permission.READ_WRITE_DOWNLOAD_DIRECTORY
。 - 下载文件:使用网络请求接口(如
@ohos.request
)创建下载任务,并指定下载文件的保存路径为公共目录。 - 处理下载结果:下载完成后,可以通过文件IO接口(如
@ohos.file.fs
)查询已下载的文件,并进行后续处理。
请注意,由于OpenHarmony的API可能随版本更新而变化,建议在实际开发中参考最新的OpenHarmony开发者文档或API指南。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。