详解Vue调用手机相机和相册以及上传
- 更新时间:2022-06-18 09:10:14
- 编辑:扶和玉
我们帮大家精选了Vue相关的编程文章,网友段善思根据主题投稿了本篇教程内容,涉及到Vue调用手机相机相册及上传、Vue调用手机相机相册、Vue调用手机相机上传相关内容,已被349网友关注,下面的电子资料对本篇知识点有更加详尽的解释。
参考资料
- 《Vue.js项目开发实战》源代码文件 配套资源 / 4.1 MB / 张帆 推荐度:
- 前端工程师必备技能:Vue移动开发实战技巧 PDF 电子书 / 122 MB / 李利德 推荐度:
- 《Vue.js+Node.js开发实战:从入门到项目上线》配书资源 配套资源 / 10.25 MB / 张帆 推荐度:
正文内容
组件
<template> <div> <input id="upload_file" type="file" accept='image/*' name="file" @change="fileChange($event)"/> <div class="image-item space" @click="showActionSheet()"> <div class="image-up"></div> </div> <div class="upload_warp"> <div class="upload_warp_img"> <div class="upload_warp_img_div" v-for="(item,index) in imgList"> <div class="upload_warp_img_div_top"> <img src="http://114.115.162.39/static/image/x.png" class="upload_warp_img_div_del" @click="fileDel(index)"> </div> <img :src="item.file.src" > </div> <div class="upload_warp_left" id="upload_warp_left" @click="fileClick()" v-if="this.imgList.length < 6"> <!--<img src="../assets/upload.png">--> <img src="../assets/images/添加图片.png" class="imgs"/> </div> </div> </div> <div class="upload_warp_text"> <span>选中{{imgList.length}}张文件,共{{bytesToSize(this.size)}}</span> </div> </div> </template>
javaScript代码
<script type="text/ecmascript-6"> export default { name: "cameras-and-albums", data(){ return{ imgList: [], datas: new FormData(), files:0, size:0 } }, methods:{ //调用相册&相机 fileClick() { $('#upload_file').click(); }, //调用手机摄像头并拍照 getImage() { let cmr = plus.camera.getCamera(); cmr.captureImage(function(p) { plus.io.resolveLocalFileSystemURL(p, function(entry) { compressImage(entry.toLocalURL(),entry.name); }, function(e) { plus.nativeUI.toast("读取拍照文件错误:" + e.message); }); }, function(e) { }, { filter: 'image' }); }, //从相册选择照片 galleryImgs() { plus.gallery.pick(function(e) { let name = e.substr(e.lastIndexOf('/') + 1); compressImage(e,name); }, function(e) { }, { filter: "image" }); }, //点击事件,弹出选择摄像头和相册的选项 showActionSheet() { let bts = [{ title: "拍照" }, { title: "从相册选择" }]; plus.nativeUI.actionSheet({ cancel: "取消", buttons: bts }, function(e) { if (e.index == 1) { this.getImage(); } else if (e.index == 2) { this.galleryImgs(); } } ); }, fileChange(el) { this.files=$("#upload_file").get(0).files; console.log(this.files.length); for(let i=0;i<this.files.length;i++){ this.datas.append("file",this.files[i]); } this.show1=false; console.log(typeof this.files); console.log(this.files); if (!el.target.files[0].size) return; this.fileList(el.target); el.target.value = '' }, fileList(fileList) { let files = fileList.files; for (let i = 0; i < files.length; i++) { //判断是否为文件夹 if (files[i].type != '') { this.fileAdd(files[i]); } else { //文件夹处理 this.folders(fileList.items[i]); } } }, //文件夹处理 folders(files) { let _this = this; //判断是否为原生file if (files.kind) { files = files.webkitGetAsEntry(); } files.createReader().readEntries(function (file) { for (let i = 0; i < file.length; i++) { if (file[i].isFile) { _this.foldersAdd(file[i]); } else { _this.folders(file[i]); } } }) }, fileAdd(file) { //总大小 this.size = this.size + file.size; //判断是否为图片文件 if (file.type.indexOf('image') == -1) { file.src = 'wenjian.png'; this.imgList.push({ file }); } else { let reader = new FileReader(); reader.vue = this; reader.readAsDataURL(file); reader.onload = function () { file.src = this.result; this.vue.imgList.push({ file }); } } }, fileDel(index) { this.size = this.size - this.imgList[index].file.size;//总大小 this.imgList.splice(index, 1); }, bytesToSize(bytes) { if (bytes === 0){ return '0 B'; } let k = 1000, // or 1024 sizes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'], i = Math.floor(Math.log(bytes) / Math.log(k)); return (bytes / Math.pow(k, i)).toPrecision(3) + ' ' + sizes[i]; }, dragenter(el) { el.stopPropagation(); el.preventDefault(); }, dragover(el) { el.stopPropagation(); el.preventDefault(); }, drop(el) { el.stopPropagation(); el.preventDefault(); this.fileList(el.dataTransfer); }, shows(et,tx){ this.strut=et; this.txt=tx; }, handleClick(){ this.$store.commit('add') }, }, } </script>
以上所述是小编给大家介绍的Vue调用手机相机及上传详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对码农之家网站的支持!
Vue相关教程
-
实例详解Vue基础学习之项目整合及优化
这篇文章主要给大家介绍了关于Vue基础学习之项目整合及优化的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Vue具有一定的参考学习价值,需要的朋友们下面来一起学习学
发布时间:2020-01-27
-
如何使用vue.js国际化 vue-i18n插件
本篇文章主要介绍了vue.js国际化 vue-i18n插件的使用详解,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
发布时间:2020-01-13
-
vue-router beforEach实现判断用户登录跳转路由筛选功能
这篇文章主要介绍了vue使用vue-router beforEach实现判断用户登录跳转路由筛选,本篇文章默认您已经会使用 webpack 或者 vue-cli 来进行环境的搭建,并且具有一定的vue基础。需要的朋友可以参考下
发布时间:2020-06-19
-
VueJS组件之间通过props交互及验证的模式讲解
本篇文章主要介绍了VueJS组件之间通过props交互及验证的方式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
发布时间:2020-07-24
-
解决Vue Router的懒加载路径的方案
这篇文章主要介绍了Vue Router的懒加载路径的解决方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
发布时间:2019-12-19
-
Vue组件插槽的使用以及调用组件内的方法分析
在本篇文章里我们给大家分享了Vue组件插槽的使用以及调用组件内的方法相关知识点,有需要的朋友们参考下。
发布时间:2021-05-18
-
总结vue填坑之解决部分浏览器不支持pushState方法
这篇文章主要介绍了详解vue填坑之解决部分浏览器不支持pushState方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
发布时间:2020-03-11