HarmonyOS 视频照片下载到沙箱并读取

现在我的页面1中有一张照片,一个视频。

现在点击下载按钮,需要把这张图片和视频下载到应用内。

并且在 页面2 中读取所下载的照片和视频

HarmonyOS
1天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
fox280

下载demo参考如下,需要在module.json5配置如下权限

‘requestPermissions’: [
{“name”: “ohos.permission.INTERNET”},
{“name”: “ohos.permission.WRITE_MEDIA”},
{“name”: “ohos.permission.READ_NEDIA”}
],
import common from '@ohos.app.ability.common';
import request from '@ohos.request';
import { BusinessError } from '@ohos.base';

// 获取应用文件路径
let context = getContext(this) as common.UIAbilityContext;
let filesDir = context.filesDir;

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

  build() {
    Row() {
      Column() {
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
        Button("下载")
        .onClick(() => {
          try {
            console.log('downloadTask1 filesDir' + filesDir + '/00sg00izg2.jpg');
            //下载文件
            request.downloadFile(context, {
              url: 'https://xxx.jpg',
              filePath: filesDir + '/00sg00izg2.jpg'
            }).then((downloadTask: request.DownloadTask) => {
              //开启回调
              downloadTask.on('complete', () => {
                console.info('downloadTask1 complete');
              })
            }).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 downloadTask downloadFile failed, code is ${err.code}, message is ${err.message});
          }
        })

          .width('100%')
      }
      .height('100%')
    }
  }}

参考链接

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-request-V5#downloadconfig

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/app-file-upload-download-V5

Image组件不能直接传入应用沙箱路径,需要传入应用沙箱uri;

解决方法:拿到文件的沙箱路径后,通过调用@ohos.file.fileuri模块的fileuri.getUriFromPath(file.path)将沙箱路径转化为沙箱uri,传入之后即可正常显示。

参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-file-fileuri-V5

分享
微博
QQ
微信
回复
1天前
相关问题
HarmonyOS 相机拍照完,照片读取失败
41浏览 • 1回复 待解决
HarmonyOS关于下载到缓存目录的问题
606浏览 • 1回复 待解决
HarmonyOS hap包下载到手机上怎么安装
110浏览 • 1回复 待解决
HarmonyOS webview如何播放本地沙箱视频
1729浏览 • 1回复 待解决