全栈工程师
全栈工程师
  • 发布:2018-08-06 10:43
  • 更新:2019-12-19 15:31
  • 阅读:3630

【报Bug】本次升级后,IOS无法plus.io.resolveLocalFileSystemURL 正常使用

分类:HTML5+

详细问题描述
[内容]

20180806本次升级后,plus.io.resolveLocalFileSystemURL IOS中 这个无法正常使用,以前是可以正常使用的,升级之后,这个选择视频 报 不允许读取,选择图片,报编码错误。

重现步骤
[步骤]
[结果]
[期望]

运行环境
[系统版本]
[浏览器版本]
[IDE版本]
[mui版本]

附件
[代码片段]
[安装包]

联系方式
[QQ]
[电话]

2018-08-06 10:43 负责人:无 分享
已邀请:
DCloud_App_Array

DCloud_App_Array

最近修改的是从相册选择视频后返回的路径,原来返回的是应用沙盒中的目录,所以可以通过plus.io.resolveLocalFileSystemURL解析。
新版本为了避免应用这类操作导致占用磁盘空间过大,调整路径为临时目录(系统在磁盘空间不足时自动清理),这类目录无法通过plus.io.resolveLocalFileSystemURL解析。
在这种场景下为何需要plus.io.resolveLocalFileSystemURL进行解析?是为了解决什么业务需求?
从示例代码中看是为了获取完整路径,实际上plus.gallery.pick返回的就是文件完整路径了,貌似没有必要通过plus.io.resolveLocalFileSystemURL解析。

解决方案:
这个问题添加参数来配置目录地址来解决,指定文件选择后保存的路径为沙盒内目录时支持通过plus.io.resolveLocalFileSystemURL解析获取文件信息。

  • 全栈工程师 (作者)

    业务场景就是:需要通过这样的方式,来获取文件的大小

    2018-08-06 17:18

  • 全栈工程师 (作者)

    plus.io.resolveLocalFileSystemURL(e, function(entry) {

    entry.file( function(file){

    var path = file.fullPath;

    var path_end = path.substring(path.indexOf("."),path.length);

    console.log(path_end);

    //将视频与图片分开

    if(path_end==".mp4"||path_end==".MOV"){

    if(file.size>26214400){//视频文件不能大于25M

    mui.toast("选择视频过大,请重新选择");

    return;

    }else{

    picarr.push(file.fullPath);

    mui.openWindow("img-circle.html");

    localStorage.setItem("picarr11",picarr);

    localStorage.setItem("pic_flag","video");

    }

    }else{

    2018-08-06 17:19

  • DCloud_App_Array

    这个问题添加参数来配置目录地址来解决,指定文件选择后保存的路径为沙盒内目录时支持通过plus.io.resolveLocalFileSystemURL解析获取文件信息。

    2018-08-06 19:52

  • 一爿阳光

    回复 DCloud_App_Array:即便在gallery的设置中填写了filename:'_doc',仍然返回的还是临时目录的地址

    2018-08-09 08:39

  • DCloud_App_Array

    这个问题还没有更新打包机,这周末我们会先更新到alpha打包机,到时使用HBuilder alpha或HBuilder X会解决此问题。

    2018-08-09 21:49

  • DCloud_App_Array

    此问题已修复,请更新到最新的HBuilderX。

    2018-09-19 11:44

  • 我的地盘

    为什么我现在(10月3日)用最新版HBuilderX,无论是真机还是打包后,还是有这个问题呢? error log: 不允许读, file:///var/mobile/Containers/Data/Application/17997C30-375D-4233-A75B-A97E738AECE5/tmp/IMG_0630.MOV

    2018-10-03 22:58

  • DCloud_App_Array

    请提供完整的重现问题示例,建议新建一个ask问题来处理

    2018-10-08 15:16

Trust

Trust - 少说废话

  • 全栈工程师 (作者)

    demo已上传,请尽快看看

    2018-08-06 11:02

全栈工程师

全栈工程师 (作者) - 精通mui、uniapp,承接相关项目外包,解决各种疑难问题。有任何问题可以随时联系,QQ:419761282

具体操作: 在 Gallery系统相册中,点击进去, 从相册找那个单选图片 --就会出现这个问题

Neil_HL

Neil_HL

为不影响使用,建议可以先使用HBuilderX进行开发,你说的这个问题在HBuidlerX里面是没有的。

  • 全栈工程师 (作者)

    HBuiderX 使用和HBulider是一样的吗?

    2018-08-06 11:17

  • Neil_HL

    回复 全栈工程师:一样的,而且体积更小,启动更快。

    2018-08-06 11:26

  • 全栈工程师 (作者)

    回复 Neil_HL:我刚才下载了试了一下,还是一样的,选择视频 不允许读

    2018-08-06 11:32

全栈工程师

全栈工程师 (作者) - 精通mui、uniapp,承接相关项目外包,解决各种疑难问题。有任何问题可以随时联系,QQ:419761282

这个问题 就是最新的一次升级之后造成,
function galleryImg(){
// 从相册中选择图片
outSet('从相册中选择图片:');
plus.gallery.pick(function(path){
plus.io.resolveLocalFileSystemURL(path, function(entry) {
entry.file(function(file) {
var path = file.fullPath;
console.log(path);
});

                        }, function(e) {  
                            console.log("11:"+e.message);  
                        });  
}, function(e){  
    outSet('取消选择图片');  
}, {filter:'none',system:false});  

}

Neil_HL

Neil_HL

你的截图不是HBuilderX的,在HX里面没出现选择图片报编码错误,出现了,选择视频 报不允许读取的错误

  • 全栈工程师 (作者)

    是的,我现在的写法,选择图片没有问题了。但是选择视频选择不了,报这个错误是怎么回事?能解决吗?

    2018-08-06 11:47

  • Neil_HL

    回复 全栈工程师:这个应该是bug,我会反馈给开发人员,会尽快解决的。

    2018-08-06 11:50

我的地盘

我的地盘

这个问题新版本里还是在的。Hbuilder X 20181012版。

IOS仍然是存到tmp目录,无法读取

  • DCloud_App_Array

    确认有没有通过配置filename参数指定保存的目录?

    plus.gallery.pick( function(path){

    console.log(path);

    }, function ( e ) {

    console.log( "取消选择图片" );

    }, {filename:'_doc/gallery/'} );

    2018-10-29 11:29

  • 我的地盘

    加了filename以后可以用了。感谢指导!

    2018-10-29 19:52

  • 1***@qq.com

    感谢指导!!!谢谢,头都抠破了

    2019-01-07 00:26

1***@qq.com

1***@qq.com

我也碰到这个问题了 ,请问解决了吗? IOS获取本地视频时报错,{"code":4,"message":"不允许读"}
plus.io.resolveLocalFileSystemURL(filePath, function(copyfileentry){
plus.io.resolveLocalFileSystemURL("_downloads/", function(root) {
copyfileentry.copyTo( root, newname, function( copyentry ){

                                }, function( ee ){  

                                });  
                            }, function (ex) {  

                            });  
                        }, function(eeeee) {  

                        })       
1***@qq.com

1***@qq.com - 90后IT男

var filepath = "file:///var/mobile/Media/DCIM/124APPLE/IMG_4156.MOV";
var fpath = decodeURI(filepath);
plus.io.resolveLocalFileSystemURL(fpath, function( entry ) {
// 可通过entry对象操作test.html文件

        }, function (e) {  
            alert("Resolve file URL failed: " + e.message);  
        });  

一直提示不允许读

该问题目前已经被锁定, 无法添加新回复