6***@qq.com
6***@qq.com
  • 发布:2024-09-24 14:17
  • 更新:2024-09-24 14:17
  • 阅读:162

【报Bug】enumerate 下载视频获取的状态是已完成,但是播放不了.

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: Windows 11 家庭中文版 22621.4169

HBuilderX类型: 正式

HBuilderX版本号: 4.08

手机系统: Android

手机系统版本号: Android 13

手机厂商: 小米

手机机型: 安卓的都这样

页面类型: vue

vue版本: vue2

打包方式: 云端

项目创建方式: HBuilderX

示例代码:
                    // 创建下载任务   
                    const dtask = plus.downloader.createDownload(it.source, data, function(d, status) {});  

// 枚举下载任务并筛选出特定条件的任务
async enumerate(num) {
const id = 1;

            try {  
                // 使用 plus.downloader.enumerate 枚举下载任务  
                const enumCBs = await new Promise((resolve, reject) => {  
                    plus.downloader.enumerate(resolve, num);  
                });  
                // 使用 Promise.all 等待所有异步操作完成  
                const filteredTasks = await Promise.all(enumCBs.map(task => {  
                    return new Promise((resolve, reject) => {  
                        // 解析本地文件系统的URL  
                        plus.io.resolveLocalFileSystemURL(task.filename,  
                            (entry) => {  
                                // 判断条件是否符合  
                                if (task.options.cata_id === id) {  
                                    resolve(task); // 符合条件,将任务添加到结果数组中  
                                } else {  
                                    resolve(null); // 不符合条件,返回 null  
                                }  
                            },  
                            (error) => {  
                                // 处理解析失败的情况  
                                console.error('解析本地文件系统URL失败:', error);  
                                resolve(null); // 解析失败,返回 null  
                            }  
                        );  
                    });  
                }));  
                // 过滤掉为 null 的任务,并返回结果数组  
                return filteredTasks.filter(task => task !== null);  
            } catch (error) {  
                // 捕获枚举任务失败的情况  
                console.error('枚举下载任务失败:', error);  
                return []; // 返回空数组表示没有符合条件的任务  
            }  
        },  
        const taskTypes = [0, 1, 2, 3, 4, 5];  
                const res = await Promise.all(taskTypes.map(type => this.enumerate(type)));  
                // 合并所有枚举结果  
                const results = res.flat();  

                // 创建一个映射以快速查找下载任务  
                const resultsMap = new Map(results.map(task => [task.options.id, task]));  

const find = resultsMap.get(v.id);
find.state 这个状态显示的状态都是正常的
let isFilename = find.filename.includes('.');
find.filename 这个是不正常的,我现在是不管什么状态如果没有这个是的后缀就强制重新下载解决的

操作步骤:

find.state

预期结果:

find.state === 4 && find.filename 是正常的

实际结果:

find.state === 4 && find.filename 是不正常的

bug描述:

enumerate 下载视频获取的状态是已完成,但是播放不了.

1、实际上没有下载完成、或者只下载一半、也能播放一半后就不行

2、没有下载路径也显示已经下载完成状态
javascript:;
3、下载已经完成、今天可以 、各别的过几天就不行了、得重新下载

2024-09-24 14:17 负责人:无 分享
已邀请:

要回复问题请先登录注册