美文网首页
webapp调用摄像头(H5+),并发送给服务端

webapp调用摄像头(H5+),并发送给服务端

作者: echo三文鱼 | 来源:发表于2020-08-13 16:30 被阅读0次
            //调用摄像头
            let cmr = window.plus.camera.getCamera(); 
            //获取图片格式(后面的参数要用到,虽然文档说是必填,但是实际不加也能成功)
            let fmt=cmr.supportedImageFormats
            //拍照事件
            cmr.captureImage((filePath)=>{
                 //filePath返回的参是路径
                window.plus.io.resolveLocalFileSystemURL( filePath, (fs)=>{//这个事件可以根据路径找到文件目录
                    fs.file( (file)=>{//这里返回的是文件本身
                        //下面是做的文件格式的转换,base64格式转成blob发送给服务端
                        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'});
                                 //获取到文件,做相应的操作
                               
                        }
                    } );
                }, ()=>{
                    //console.log(error)
                } );
    
            },()=>{
                //console.log(error)
            },{
                format:fmt,
            });  
    

    问题:项目存在的问题就是文件转换那里,fs.file( (file) 里面的file得到的是文件本身,打印出来和在控制台和正常的文件是一样,但是前缀不同,一个是s{},正常的是file{},里面的对象都一致,但是上传之后,在formData里面识别的不同,file格式识别是blob流,但是s{}识别成[object,object],虽然上面的方法可以实现上传到服务端,但是最终得到的是blob格式的文件,需要更改后缀名,才能得到原始文件,记录一下问题。

    相关文章

      网友评论

          本文标题:webapp调用摄像头(H5+),并发送给服务端

          本文链接:https://www.haomeiwen.com/subject/oofidktx.html