视频链接无法下载,该怎么解决啊?

视频链接无法下载

HarmonyOS
2024-08-22 21:18:20
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
zbw_apple

请参考下面demo:

Column() { 
  Button("下载", { type: ButtonType.Capsule, stateEffect: false }) 
    .width('100%') 
    .height(55) 
    .fontSize('15fp') 
    .fontColor('#ffffff') 
    .margin({ top: 20 }) 
  SaveButton().onClick(async (event: ClickEvent, result: SaveButtonOnClickResult) => { 
    if (result === SaveButtonOnClickResult.SUCCESS) { 
      http.createHttp().request(// 填写HTTP请求的URL地址,可以带参数也可以不带参数。URL地址需要开发者自定义。请求的参数可以在extraData中指定 
        "https://txcdn.peiyinapp.com/Video/samples/10.mp4", 
        { 
          method: http.RequestMethod.GET, // 可选,默认为http.RequestMethod.GET 
          readTimeout: 60000, // 可选,默认为60000ms 
          connectTimeout: 60000, // 可选,默认为60000ms 
          maxLimit: 50 * 1024 * 1024, 
          expectDataType: 2, 
        }, 
        async (err: BusinessError, data: http.HttpResponse) => { 
          console.log(JSON.stringify(data), '下载') 
          if (!err) { 
            let imageBuffer: ArrayBuffer = data.result as ArrayBuffer; 
            try { 
              // 获取相册路径 
              const context = getContext(this); 
              let helper = photoAccessHelper.getPhotoAccessHelper(context); 
              let uri = await helper.createAsset(photoAccessHelper.PhotoType.Video, 'mp4') 
              let file = await fs.open(uri, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE) 
              // 写入文件 
              await fs.write(file.fd, imageBuffer); 
              // 关闭文件 
              await fs.close(file.fd); 
              console.info("success ") 
            } catch (error) { 
              console.error("error is " + JSON.stringify(error)) 
            } 
          } else { 
            console.error("error occurred when image downloaded!") 
          } 
        }); 
 
    } else { 
      promptAction.showToast({ message: '设置权限失败!' }) 
    } 
  }) 
}

有两点需要注意,请求的参数:

maxLimit: 50 * 1024 * 1024, 响应消息的最大字节限制

expectDataType: 2, //这是视频文件,需要设置成arraybuffer样式

超过100M最大限制后,用requestInStream,流式返回,没有大小限制,但是也要关注手机内存。

分享
微博
QQ
微信
回复
2024-08-23 16:54:34
相关问题
汉字转拼音去掉音标怎么解决
473浏览 • 1回复 待解决
模拟器无法启动怎么解决呢?
460浏览 • 1回复 待解决
升级api11出现问题,怎么解决
1229浏览 • 1回复 待解决
有谁知道怎么解决
1645浏览 • 1回复 待解决
项目启动报错怎么处理
333浏览 • 1回复 待解决
for .in 语法不支持,怎么
810浏览 • 1回复 待解决
最新RNOH启动报错 ,怎么
997浏览 • 1回复 待解决
Android下述图片布局怎么解决
5461浏览 • 2回复 待解决
运行应用提示如下内容怎么
2478浏览 • 1回复 待解决
安装动态库失败,怎么
609浏览 • 1回复 待解决
怎么
784浏览 • 1回复 待解决
Map转JSON,哪位大佬知道怎么解决
1772浏览 • 0回复 待解决
studio编译经常报错怎么
640浏览 • 1回复 待解决
模拟器不能启动怎么
432浏览 • 1回复 待解决
状态栏设置颜色失效怎么
1987浏览 • 1回复 待解决
字符串资源引用出错,怎么
815浏览 • 1回复 待解决