码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 解决 iOS 端小程序「saveVideoToPhotosAlbum:fail invalid video」问题


    场景复现:

    const url = 'https://mobvoi-digitalhuman-video-public.weta365.com/1788148372310446080.mp4'
    
    uni.downloadFile({
      url,
      success: (res) => {
        uni.saveVideoToPhotosAlbum({
          filePath: res.tempFilePath,
          success: (res) => {
            console.log("res => ", res);
            uni.showToast({
              title: '下载成功',
              icon: 'success'
            });
          },
          fail(err) {
            console.log("err => ", err);
            uni.showToast({
              title: '保存失败',
              icon: 'error'
            });
          },
        });
      },
      fail(err) {
        uni.showToast({
          title: '下载失败,请稍后再试',
          icon: 'error'
        });
      },
    });
    

    PC 和安卓没啥事,但是 iOS 上就会有这么个玩意出来:

    {
        errMsg: "saveVideoToPhotosAlbum:fail invalid video"
    }
    

    这个讨论中的有效信息可能是最多的,可那位说使用 compressVideo() 的老哥也没贴个实例。也尝试去用了,但是又碰到了另一个错误,真是世间 Bug 与你环环相扣=_=

    于是换了个思路,我去翻了一下 Uni 插件市场,看到了这个:「移动端-H5-小程序下载保存图片,文档和视频到手机」

    在这里插入图片描述
    它不是能成功下载吗,那我就去借鉴一下它的源码,看看它是怎么实现的。

    这个插件的源码就不说了,有兴趣自己去看,我就贴一下最终成功下载的代码:

    const url = 'https://mobvoi-digitalhuman-video-public.weta365.com/1788148372310446080.mp4';
    
    const fileName = new Date().valueOf();
    
    //  拼接本地文件路径
    const filePath = `${uni.env.USER_DATA_PATH}/${fileName}.${url.split('.').pop()}`;
    
    uni.downloadFile({
      url,
      filePath,
      success: (res) => {
        uni.saveVideoToPhotosAlbum({
          filePath: res.filePath,
          success: (res) => {
            console.log('res => ', res);
            uni.showToast({
              title: '下载成功',
              icon: 'success'
            });
            const fileMgr = uni.getFileSystemManager();
            // 删除本地文件
            fileMgr.unlink({
              filePath,
              success(r) {
                console.log('unlink-getFileSystemManager');
                console.log(r);
              }
            });
          },
          fail(err) {
            console.log('err => ', err);
            uni.showToast({
              title: '保存失败',
              icon: 'error'
            });
          }
        });
      },
      fail(err) {
        uni.showToast({
          title: '下载失败,请稍后再试',
          icon: 'error'
        });
      }
    });
    

    -END-

  • 相关阅读:
    基于SSM的员工信息管理系统设计与实现
    netty系列之:在netty中使用native传输协议
    云课五分钟-09Linux基础命令实践-AI助力快速入门
    Java--web.xml加载过程;文件标签详解
    flutter播放rtmp视频
    【3D建模制作技巧分享】3dmax如何设置视图布局
    Javascript知识【案例:重写省市联动&案例:列表左右选择】
    Shell 脚本详解
    html在线阅读小说网页制作模板 小说书籍网页设计 大学生静态HTML网页源码 dreamweaver网页作业 简单网页课程成品
    Linux中的服务管理
  • 原文地址:https://blog.csdn.net/qq_49661519/article/details/139349977
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号