问题引出
开发webapp,有些时候可能需要打开摄像头,拍照上传图片等,其实在手机浏览器中访问平台是很容易实现1
<input type="file" accept="image/*" multiple @change="toChoose" />
multiple 属性即可,在移动浏览器中点击,会显示如下选择:
可以看到,当加了multiple属性之后,浏览器会主动显示文件的途径可供选择,本来应该还会显示一个文件选项的,因为我们还加了 accept=”image/*”,只接受图片文件
注:PC浏览器直接打开文件资源选择
当我们用Cordova打包之后,该文件选择也是直接打开图片资源选择,并不会有拍照的选择项,当然也排除某些手机在图片选择里也有拍照入口。
解决方案
以下方法是在vue开发下的配置,正常开发下直接在对应位置加入对应代码即可
拍照方法
在需要使用拍照的组件页面里加入如下方法:
1 | cameraTakePicture() { |
其主要的就是 cameraTakePicture()拍照入口函数
onSuccess()是成功回掉 onFail(mess)是错误回掉
html引入
1、
头部引入1 | <meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *; img-src 'self' data: content:;"> |
注意第一个标签,我目前是不知道该标签究竟有什么用处,一般网友会叫你加上,但如果加上后不能用了,就请删了吧,无大碍的,
我的项目因为有CDN引入,加上该标签后,竟然连cdn引入都无法生效。所有就去掉了。
2、
最后引入1 | <script type="text/javascript" src="cordova.js"></script> |
main.js
1 | document.addEventListener('deviceready', function() { |
cordova安装插件
cordova plugin add cordova-plugin-camera
只需将打包后的文件 放到Cordova项目的WWW文件下进行打包即可。
网上很多让cordova+vue结合开发的,个人认为pc和手机端均要开发的话,还是不要嵌入到Cordova中,只要将手机端的包放入打包生产app即可,虽然有点点麻烦。但不会乱
cordova打包
cordova build …