//調(diào)用攝像頭
let cmr = window.plus.camera.getCamera();
//獲取圖片格式(后面的參數(shù)要用到,雖然文檔說是必填,但是實際不加也能成功)
let fmt=cmr.supportedImageFormats
//拍照事件
cmr.captureImage((filePath)=>{
//filePath返回的參是路徑
window.plus.io.resolveLocalFileSystemURL( filePath, (fs)=>{//這個事件可以根據(jù)路徑找到文件目錄
fs.file( (file)=>{//這里返回的是文件本身
//下面是做的文件格式的轉(zhuǎn)換弄兜,base64格式轉(zhuǎn)成blob發(fā)送給服務(wù)端
let fileReader = new window.plus.io.FileReader();
fileReader.readAsDataURL(file, 'base64');
fileReader.onloadend = (evt)=>{
let binary = atob(evt.target.result.split(',')[1]);
let array = [];
for(let i = 0; i < binary.length; i++) {
array.push(binary.charCodeAt(i));
}
let dataImg = new Blob([new Uint8Array(array)], {type:'image/jpeg'});
//獲取到文件,做相應(yīng)的操作
}
} );
}, ()=>{
//console.log(error)
} );
},()=>{
//console.log(error)
},{
format:fmt,
});
問題:項目存在的問題就是文件轉(zhuǎn)換那里瓷式,fs.file( (file) 里面的file得到的是文件本身替饿,打印出來和在控制臺和正常的文件是一樣,但是前綴不同贸典,一個是s{}视卢,正常的是file{},里面的對象都一致,但是上傳之后廊驼,在formData里面識別的不同据过,file格式識別是blob流,但是s{}識別成[object,object]妒挎,雖然上面的方法可以實現(xiàn)上傳到服務(wù)端绳锅,但是最終得到的是blob格式的文件,需要更改后綴名饥漫,才能得到原始文件榨呆,記錄一下問題罗标。