【移动端】input type="file" multiple为true无法在安卓系统多选问题解决——利用H5+的plus.gallery.pick

一、pick

从系统相册选择文件(图片或视频)

详情见官网:https://www.html5plus.org/doc/zh_cn/gallery.html#plus.gallery.pick

语法:

void plus.gallery.pick(successCB, errorCB, options);

参数:

    • succesCB: GalleryPickSuccessCallback | GalleryMultiplePickSuccessCallback ) 必选 从系统相册中选择文件完成后的回调函数

      单选时通过GalleryPickSuccessCallback回调函数返回选择的图片或视频文件路径,多选时通过GalleryMultiplePickSuccessCallback回调函数返回图片或视频文件路径。

    • errorCB: GalleryErrorCallback ) 可选 从系统相册中选择文件操作错误的回调函数
    • options: GalleryOptions ) 可选 设置选择文件的参数

示例:

// 从相册中选择多张图片 
function galleryImgs(){
    // 从相册中选择图片
    console.log("从相册中选择多张图片:");
    plus.gallery.pick( function(e){
        for(var i in e.files){
            console.log(e.files[i]);
        }
    }, function ( e ) {
        console.log( "取消选择图片" );
    },{filter:"image",multiple:true});
}

但是在web端input type="file"得到的event.target.files是具体的文件信息,而plus.gallery.pick的successCB回调的e.files为文件的路径,要想取得具体的文件信息可以使用h5+resolveLocalFileSystemURL读取本地图片文件,转为file对象:

二、resolveLocalFileSystemURL

通过URL参数获取目录对象或文件对象

详情见官网:https://www.html5plus.org/doc/zh_cn/io.html#plus.io.resolveLocalFileSystemURL

语法:

void plus.io.resolveLocalFileSystemURL( url, succesCB, errorCB );

参数:

    • url : DOMString ) 必选 要操作文件或目录的URL地址
    • succesCB: FileResolveSuccessCallback ) 必选 获取操作文件或目录对象成功的回调函数
    • errorCB: FileErrorCallback ) 可选 获取操作文件或目录对象失败的回调函数
plus.io.resolveLocalFileSystemURL(
          fileAllPath, 
          function( entry ) {                                
            // 可通过entry对象操作test.html文件 
            entry.file( function(file){
//此处的file信息就跟web端input type="file"得到的event.target.files基本一致了 ...}) })

 

原文地址:https://www.cnblogs.com/vickylinj/p/13280171.html