H5调用相机上传图片

具体文档可参考:HTML5+ API Reference


/**
 * 调用手机相机
 * @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}
        );
    })
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

web-Rock

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值