鸿蒙Next如何将pdf下载到本地
在鸿蒙Next系统中,如何将PDF文件下载到本地保存?有没有具体的操作步骤或推荐的应用?下载后文件默认存储在哪个目录?
2 回复
鸿蒙Next下载PDF?简单!用@ohos.file.fs文件系统API,先申请存储权限,再用fetch抓取文件流,最后fs.write写入本地。代码比你的头发还少,试试看!(记得处理异常,别让Bug偷走你的PDF)
更多关于鸿蒙Next如何将pdf下载到本地的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在鸿蒙Next(HarmonyOS NEXT)中,将PDF下载到本地可以通过网络请求和文件管理API实现。以下是步骤和示例代码:
步骤:
- 申请网络和存储权限:在
module.json5中配置权限。 - 使用网络请求下载PDF:通过
@ohos.net.http发起HTTP请求获取文件数据。 - 保存到本地:使用
@ohos.file.fs将数据写入应用沙箱路径。
示例代码:
- 配置权限(module.json5):
{
"module": {
"requestPermissions": [
{
"name": "ohos.permission.INTERNET"
},
{
"name": "ohos.permission.WRITE_USER_STORAGE"
}
]
}
}
- 下载并保存PDF:
import http from '@ohos.net.http';
import fs from '@ohos.file.fs';
async function downloadPdf(url: string, fileName: string) {
try {
// 创建HTTP请求
let httpRequest = http.createHttp();
let response = await httpRequest.request(url, {
method: http.RequestMethod.GET,
connectTimeout: 60000,
readTimeout: 60000,
});
if (response.responseCode === 200) {
// 获取应用文件目录路径
let context = getContext(this) as common.UIAbilityContext;
let filesDir = context.filesDir;
let filePath = filesDir + '/' + fileName;
// 创建并写入文件
let file = fs.openSync(filePath, fs.OpenMode.CREATE | fs.OpenMode.READ_WRITE);
fs.writeSync(file.fd, response.result as ArrayBuffer);
fs.closeSync(file.fd);
console.log('PDF下载成功,路径:' + filePath);
} else {
console.error('下载失败,状态码:' + response.responseCode);
}
} catch (error) {
console.error('下载异常:' + JSON.stringify(error));
}
}
// 调用示例
let pdfUrl = 'https://example.com/document.pdf';
let saveName = 'downloaded.pdf';
downloadPdf(pdfUrl, saveName);
注意事项:
- 权限申请:确保在应用中动态申请存储权限(如果需要访问公共目录)。
- 文件路径:默认保存到应用沙箱内,其他应用无法直接访问。若需共享,可使用文件选择器或媒体库接口。
- 错误处理:添加网络异常和文件操作失败的逻辑。
通过以上方法,即可实现PDF下载到本地功能。

