鸿蒙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实现。以下是步骤和示例代码:

步骤:

  1. 申请网络和存储权限:在 module.json5 中配置权限。
  2. 使用网络请求下载PDF:通过 @ohos.net.http 发起HTTP请求获取文件数据。
  3. 保存到本地:使用 @ohos.file.fs 将数据写入应用沙箱路径。

示例代码:

  1. 配置权限(module.json5):
{
  "module": {
    "requestPermissions": [
      {
        "name": "ohos.permission.INTERNET"
      },
      {
        "name": "ohos.permission.WRITE_USER_STORAGE"
      }
    ]
  }
}
  1. 下载并保存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下载到本地功能。

回到顶部