HarmonyOS 鸿蒙Next怎样用savebutton下载网络图片,并且保存到图库

HarmonyOS 鸿蒙Next怎样用savebutton下载网络图片,并且保存到图库

我模仿官方实例写的,这里的网络图片URL写了,但是没有用,进入图库看图片是空白的

2 回复
可以用HTTP下载然后保存。

参考demo:

import { http } from '@kit.NetworkKit'
import { BusinessError } from '@kit.BasicServicesKit';
import ResponseCode from '@ohos.net.http';
import { photoAccessHelper } from '@kit.MediaLibraryKit';
import fs from '@ohos.file.fs';

@Entry @Component struct Index {

loadImageWithUrl(url: string) {

<span class="hljs-comment">// 使用request下载图片并在回调函数中保存图片到相册</span>
http.createHttp().request(url,
  {
    method:http.RequestMethod.GET,
    connectTimeout:<span class="hljs-number">60000</span>,
    readTimeout:<span class="hljs-number">60000</span>
  },

  async (error: BusinessError, data: http.HttpResponse) =&gt; {
    <span class="hljs-keyword">if</span> (error) {
      console.error(`http reqeust failed <span class="hljs-keyword">with</span>. Code: ${error.code}, message: ${error.message}`);
    } <span class="hljs-keyword">else</span> {
      <span class="hljs-keyword">if</span> (ResponseCode.ResponseCode.OK === data.responseCode) {
        <span class="hljs-keyword">let</span> imageBuffer: <span class="hljs-built_in">ArrayBuffer</span> = data.result as <span class="hljs-built_in">ArrayBuffer</span>;
        <span class="hljs-keyword">try</span> {

          <span class="hljs-comment">// 获取相册路径</span>
          <span class="hljs-keyword">const</span> context = getContext(<span class="hljs-keyword">this</span>);
          <span class="hljs-keyword">let</span> helper = photoAccessHelper.getPhotoAccessHelper(context);
          <span class="hljs-keyword">let</span> uri = await helper.createAsset(photoAccessHelper.PhotoType.IMAGE, <span class="hljs-string">'jpg'</span>)
          <span class="hljs-keyword">let</span> file = await fs.open(uri, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE)

          <span class="hljs-comment">// 写入文件</span>
          await fs.write(file.fd, imageBuffer);

          <span class="hljs-comment">// 关闭文件</span>
          await fs.close(file.fd);
        } <span class="hljs-keyword">catch</span> (error) {
          console.error(<span class="hljs-string">"error is "</span>+ <span class="hljs-built_in">JSON</span>.stringify(error))
        }
      } <span class="hljs-keyword">else</span> {
        console.error(<span class="hljs-string">"error occurred when image downloaded!"</span>)
      }
    }
  })

} }

更多关于HarmonyOS 鸿蒙Next怎样用savebutton下载网络图片,并且保存到图库的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,使用SaveButton下载网络图片并保存到图库,可以按照以下步骤操作:

  1. 申请权限:在module.json5文件中声明必要的权限,包括ohos.permission.INTERNET(用于访问网络)和ohos.permission.WRITE_IMAGEVIDEO(用于写入图片到图库)。
  2. 创建网络请求:使用@kit.NetworkKit中的http模块创建HTTP请求,通过request方法下载网络图片。
  3. 处理响应:在请求的回调函数中处理响应,将返回的ArrayBuffer类型的图片数据保存到局部变量中。
  4. 保存图片:在SaveButton的onClick事件中,使用@kit.MediaLibraryKit中的photoAccessHelper获取相册路径,并使用@kit.CoreFileKit中的fs模块打开文件、写入ArrayBuffer数据并关闭文件,从而将图片保存到本地相册。

需要注意的是,在保存图片前要确保已获取必要的用户授权,并妥善处理可能出现的异常和错误。

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

回到顶部