HarmonyOS Image使用网络图片问题?

Image加载网络图片资源并显示后,能获取这张图片资源并将它存储在沙盒中吗?

阅读 527
1 个回答

可以参考以下demo:

import { fileIo } from '@kit.CoreFileKit';
import { BusinessError, request } from '@kit.BasicServicesKit';

@Entry
@Component
struct Page {
  @State message: string = 'Hello World';

  build() {
    Column() {
      Image('xxx').onComplete(()=>{
        console.debug(`image => 保存网络图片到应用沙盒`)
        const context = getContext(this);
        let dirPath = context.cacheDir
        let fileName = 'temp2.jpg'
        // let fileName = 'temp1.mp4'
        //防止沙箱重名导致下载失败
        if (fileIo.accessSync(`${dirPath}/${fileName}`)) {
          fileIo.rmdirSync(`${dirPath}/${fileName}`)
        }
        try {
          request.downloadFile(context, {
            enableMetered: true,
            url: "xxx",
            filePath: `${dirPath}/${fileName}`
          }).then((downloadTask: request.DownloadTask) => {
            downloadTask.on('fail', (err: number) => {
              console.error(`Failed to download the task. Code: ${err}`);
            });
            downloadTask.on('complete', async () => {
              console.log('下载完成')
            })
          }
          ).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}`);
        }
      })
    }
  }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进