Конкретные документы см. в: Справочник по 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}
);
})
}