uni-app plus.gallery.pick 返回的资源路径错误,file协议头错误

uni-app plus.gallery.pick 返回的资源路径错误,file协议头错误

信息 内容
产品分类 HTML5+
HBuilderX版本号 4.36
手机系统 iOS
手机系统版本号 iOS 18
手机厂商 苹果
手机机型 15
打包方式 云端

示例代码:

plusChoseVideo = (param) => {  
    return new Promise((resolve, reject) => {  
        plus.gallery.pick(function (e) {  
            const res = {  
                code: 1,  
                list: e  
            }  
            console.log(res)  
            resolve(res)  
        }, function (err) {  
            reject(err)  
        }, {filter: 'video', multiple: true, ...param})  
    })  
}

返回的res中的路径file多次拼接

操作步骤:

必现

预期结果:

file://var/mobile/Containers/Data/Application/CB5F7291-1E62-49B5-B522-373739F140D7/Documents/Pandora/apps/CB7E011AB0B54EA3F3F49AF3E6D317E8/doc/gallery_temp/IMG_5080_origin.mp4

实际结果:

file:///file:/var/mobile/Containers/Data/Application/CB5F7291-1E62-49B5-B522-373739F140D7/Documents/Pandora/apps/CB7E011AB0B54EA3F3F49AF3E6D317E8/doc/gallery_temp/IMG_5080_origin.mp4

bug描述:

plus.gallery.pick返回的资源路径file协议拼接错误,多次拼接file协议头


更多关于uni-app plus.gallery.pick 返回的资源路径错误,file协议头错误的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

打自定义基座试下

更多关于uni-app plus.gallery.pick 返回的资源路径错误,file协议头错误的实战教程也可以访问 https://www.itying.com/category-93-b0.html


是自定义基座哈,线上稳定运营的项目,在最近一次HBuilder e.3.6更新过后云打包出现的,我们还是发热更新修复的线上bug。刚刚测试了一下问题还没修复

HBuilder 4.36

针对你提到的 uni-appplus.gallery.pick 返回的资源路径错误,特别是 file 协议头错误的问题,这通常是由于路径处理不当或者环境配置问题导致的。以下是一个示例代码,展示了如何使用 plus.gallery.pick 并正确处理返回的路径。同时,我也会提及一些可能导致 file 协议头错误的原因和解决方案。

示例代码

// 调用相册选择图片
plus.gallery.pick({
    success: function (event) {
        var filePaths = event.files; // 获取选中的文件路径数组
        if (filePaths.length > 0) {
            var filePath = filePaths[0]; // 获取第一张图片的路径
            // 正确的文件路径应该是以 'file://' 开头的
            console.log("Selected file path:", filePath);

            // 示例:显示图片
            var img = document.createElement('img');
            img.src = filePath;
            document.body.appendChild(img);

            // 如果需要进一步处理文件,比如上传,可以使用以下代码
            // 注意:这里只是示例,实际上传逻辑需要根据你的需求来实现
            var task = plus.uploader.createUpload(yourUploadUrl, {
                method: "POST",
                chunked: false
            }, function (t, status) {
                if (status == 200) {
                    console.log("Upload succeeded:", t.responseText);
                } else {
                    console.error("Upload failed with status:", status);
                }
            });
            task.addFile(filePath, { key: 'file' });
            task.start();
        } else {
            console.log("No file selected.");
        }
    },
    fail: function (error) {
        console.error("Failed to pick file:", error);
    }
});

可能的原因及解决方案

  1. 路径格式错误:确保返回的路径是以 file:// 开头的。如果不是,可能是路径处理不当或者环境配置有误。

  2. 环境差异uni-app 在不同平台上(如 H5、小程序、App)的行为可能有所不同。确保在 App 环境下测试,因为 plus API 仅在 App 环境下有效。

  3. 权限问题:确保应用有访问相册和文件系统的权限。在 manifest.json 中配置相关权限。

  4. 路径转换:如果需要在 Web 环境中模拟或测试,可能需要将路径转换为 Web 可访问的格式,但这通常不适用于 plus API 返回的路径。

  5. API 版本:检查 uni-appHBuilderX 的版本,确保它们支持你的代码中使用的所有 API 和特性。

以上代码和解决方案应该能帮助你解决 plus.gallery.pick 返回的资源路径错误问题。如果问题依旧存在,建议检查 uni-app 的官方文档或社区论坛获取更多帮助。

回到顶部