HarmonyOS 鸿蒙Next 用户从APP下载文件到Download目录的正确流程是什么 以及需要的权限如何添加
HarmonyOS 鸿蒙Next 用户从APP下载文件到Download目录的正确流程是什么 以及需要的权限如何添加
官方例子是这样写入到Download目录:
function writeUserDownloadDirExample() {
// 检查是否具有 READ_WRITE_DOWNLOAD_DIRECTORY 权限,无权限则需要向用户申请授予权限。
try {
// 获取 Download 目录
const downloadPath = Environment.getUserDownloadDir();
console.info(`success to getUserDownloadDir: ${downloadPath}`);
// 保存 temp.txt 到 Download 目录下
const file = fs.openSync(`${downloadPath}/temp.txt`, fs.OpenMode.CREATE | fs.OpenMode.READ_WRITE);
fs.writeSync(file.fd, 'write a message');
fs.closeSync(file);
} catch (error) {
const err: BusinessError = error as BusinessError;
console.error(`Error code: ${err.code}, message: ${err.message}`);
}
}
但是,假如现在是一个二进制文件,比如zip压缩包,比如PDF文件,我该如何保存到Download目录
更多关于HarmonyOS 鸿蒙Next 用户从APP下载文件到Download目录的正确流程是什么 以及需要的权限如何添加的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
可以参考这个:
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/save-user-file-V5#download模式保存文件
参考代码如下:
copyToDownload() {
let context = getContext() as common.UIAbilityContext;
let filesDir = context.filesDir;
let date = new Date();
let failCallback1 = (err: number) => {
console.error(`Failed to download the task. Code: ${err}`);
};
let fileName = date.getTime() + '.png'
let filePath = filesDir + '/' + fileName
try {
request.downloadFile(context, {
url: url1,
filePath: filePath
}).then((downloadTask: request.DownloadTask) => {
downloadTask.on('fail', failCallback1);
downloadTask.on('complete', () => {
console.info('download complete');
let documentSaveOptions = new picker.DocumentSaveOptions();
documentSaveOptions.newFileNames = [fileName];
let documentPicker = new picker.DocumentViewPicker();
documentPicker.save(documentSaveOptions).then((documentSaveResult: Array<string>) => {
let uri = documentSaveResult[0];
let sanFile = fs.openSync(filePath, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE)
let pubFile = fs.openSync(uri, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE)
fs.copyFileSync(sanFile.fd, pubFile.fd)
console.info('DocumentViewPicker.save successfully, DocumentSaveResult uri: ' +
JSON.stringify(documentSaveResult));
}).catch((err: BusinessError) => {
console.error('DocumentViewPicker.save failed with err: ' + JSON.stringify(err));
});
})
}).catch((err: BusinessError) => {
console.error(`Invoke downloadTask failed, code is ${err.code}, message is ${err.message}`);
});
} catch (error) {
let err: BusinessError = error as BusinessError;
console.error(`Invoke downloadFile failed, code is ${err.code}, message is ${err.message}`);
}
}
更多关于HarmonyOS 鸿蒙Next 用户从APP下载文件到Download目录的正确流程是什么 以及需要的权限如何添加的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next系统中,用户从APP下载文件到Download目录的正确流程及权限添加方式如下:
下载流程:
-
请求权限:在APP中,首先需要通过代码请求存储权限,以确保APP有权访问设备的存储系统。
-
创建下载任务:在用户触发下载操作后,APP应创建一个下载任务,包括指定下载文件的URL、目标存储路径等信息。
-
执行下载:通过系统的下载管理器或自定义的下载逻辑,执行下载任务,将文件保存到指定的Download目录中。
-
通知用户:下载完成后,APP应通过通知或UI更新等方式告知用户下载结果。
权限添加:
-
修改AndroidManifest.xml:在APP的AndroidManifest.xml文件中,添加以下权限声明:
<uses-permission android:name="ohos.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="ohos.permission.WRITE_EXTERNAL_STORAGE"/>
-
动态请求权限:在运行时,APP应检查并请求上述存储权限。如果用户未授予权限,APP应提示用户授予权限。
请注意,以上流程仅适用于HarmonyOS鸿蒙Next系统,且可能因系统版本或设备差异而有所不同。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html