【移动端】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基本一致了 ...}) })