HarmonyOS 鸿蒙Next webview 中h5 保存网络图片到相册 下载excel格式的文件需要调用什么方法

发布于 1周前 作者 ionicwang 来自 鸿蒙OS

HarmonyOS 鸿蒙Next webview 中h5 保存网络图片到相册 下载excel格式的文件需要调用什么方法

webview 中h5 保存网络图片到相册, 下载excel格式的文件需要调用什么方法 

2 回复

当前下载保存可以参考以下demo:

// 下载保存

  downloadSave() {

    let context = GlobalContext.getContext().getObject("UIAbilityContext") as common.UIAbilityContext

    let filePath = context.filesDir + "/test5.xlsx";

    let url = "http://****YdExcel/20240605173655470PC%E8%BF%90%E5%8D%95%E7%AE%A1%E7%90%86.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 webview 中h5 保存网络图片到相册 下载excel格式的文件需要调用什么方法的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next webview中,处理H5页面保存网络图片到相册及下载Excel格式文件的操作,主要依赖鸿蒙系统提供的API接口。

  1. 保存网络图片到相册

    • 使用MediaStore API进行图片保存。首先,通过HTTP请求获取图片数据,然后利用BitmapFactory将图片数据转换成Bitmap对象。接着,使用MediaStore.Images.Media.insertImage方法将Bitmap对象保存到设备相册中。
  2. 下载Excel格式的文件

    • 调用DownloadManager API下载文件。首先,通过HTTP请求获取Excel文件的URL,然后构建DownloadManager.Request对象,并设置文件的URL、存储位置(如公共下载目录)、文件名称(带.xlsx后缀)等信息。最后,调用DownloadManagerenqueue方法开始下载。

注意,实际操作中需要处理权限问题,如读写存储权限,以及处理下载和保存过程中可能出现的异常。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部