H5 вызывает камеру, чтобы загрузить фотографии

Конкретные документы см. в: Справочник по API HTML5+.


/**
 * 调用手机相机
 * @param { String } type 返回的数据类型 目前可选值 File、url  默认为URL
 * @returns [ '根据类型返回的数组' ]
 */
export function captureImage(type){
    
     
	let cmr = plus.camera.getCamera();
	let res = cmr.supportedImageResolutions[0];
	let fmt = cmr.supportedImageFormats[0]; 
    return new Promise((resolve,reject)=>{
    
     
        cmr.captureImage( 
            ( path ) => {
    
      
                let p = plus.io.convertLocalFileSystemURL(path); 
                let filePath = p; 
                if(plus.os.name=='iOS'){
    
     
                    filePath = 'file://'+p; 
                }
                plus.io.resolveLocalFileSystemURL(
                    filePath, //指定的目录
                    (entry) =>{
    
     
                        entry.file((file)=>{
    
     
                            var fileReader = new plus.io.FileReader();
                            fileReader.readAsDataURL(file);//以BASE64编码格式读取文件  
                            fileReader.onloadend = function(evt) {
    
         
                                //base64编码格式转file格式
                                console.log(evt)
                                var aa = evt.target.result; 
                                var arr = aa.split(','),
                                    mime = arr[0].match(/:(.*?);/)[1],
                                    bstr = atob(arr[1]),
                                    n = bstr.length,
                                    u8arr = new Uint8Array(n);
                                while (n--) {
    
    
                                    u8arr[n] = bstr.charCodeAt(n);
                                }
                                var fileResult = new File([u8arr], evt.target.fileName.split('/').at(-1), {
    
     type: mime }); 
                                if(type == 'file'){
    
    
                                    return resolve([fileResult])
                                }
                                let file1 = new FormData()
                                file1.append('file',fileResult)
                                // fileUpload 为上传文件接口 copy时记得修改
                                fileUpload(file1).then(async (res: any) => {
    
     
                                    resolve([res.data]);  
                                });  
                            }   
                        }) 
                    },
                    (err) => {
    
    
                        console.log("访问指定目录失败:" + err.message,err);
                        Toast("访问指定目录失败:" + err.message) 
                        reject(err)
                    }
                );  
            },
            ( error ) => {
    
    
                reject( error );
            },
            {
    
    resolution:res,format:fmt}
        );
    })
}

Guess you like

Origin blog.csdn.net/lys20000913/article/details/130127354