一、使用vant 组件
文档中提示设置 capture 字段为 camera 可直接调用摄像头打包后点击上传还是弹出拍照与选择文件
二、使用uni-app API
文档中提示设置 sourceType字段为 camera 可直接调用摄像头
但是打包后还是弹出拍照与选择文件
三、最后解决
方法:
- getCamera: 获取摄像头管理对象
对象:
- Camera: 摄像头对象
- CameraOptions: JSON对象,调用摄像头的参数
- CameraCropStyles: 裁剪图片设置项
- PopPosition: JSON对象,弹出拍照或摄像界面指示位置
回调方法:
- CameraSuccessCallback: 调用摄像头操作成功回调
- CameraErrorCallback: 摄像头操作失败回调
// 文件上传
onGetImgClick() {
let that = this
let cmr = plus.camera.getCamera() //获取相机对象
cmr.captureImage((p) => {
plus.io.resolveLocalFileSystemURL(p, function (entry) {
entry.file((file) => {
let fileReader = new plus.io.FileReader();
fileReader.readAsDataURL(file);
fileReader.onloadend = function (e) {
let picUrl = e.target.result.toString(); // 获取文件base64
let blob = convertBase64UrlToBlob(picUrl) // base64转blob
let f_file = new File([blob], p, {type: "text/plain;charset=utf-8"})
uni.uploadFile({
url: "",
file: result,
name: "f_file",
fileType: "image",
header: {Authentication:Token},
formData: {},
success: (res) => {
let obj = JSON.parse(res.data);
Toast('文件上传完成')
},
})
}
file.close()
})
})
},
function (error) {
console.log('---' + 'Capture image failed: ' + error.message)
},
)
},