组件

选中{{imgList.length}}张文件,共{{bytesToSize(this.size)}}

javaScript代码

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.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')

},

},

}

以上所述是小编给大家介绍的Vue调用手机相机及上传详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

本文标题: 详解Vue调用手机相机和相册以及上传

本文地址: http://www.cppcns.com/wangluo/javascript/258284.html

vue调用手机相机相册_详解Vue调用手机相机和相册以及上传相关推荐

  1. vue调用手机相机相册_详解Vue.js调用手机相机和相册以及上传

    详解Vue.js调用手机相机和相册以及上传 发布于 2020-7-7| 复制链接 摘记: 组件 ```xhtml .. 组件 ```xhtml --> 选中{{imgList.length}}张 ...

  2. dom不刷新 vue 加数据后_详解Vue 数据更新了但页面没有更新的 7 种情况汇总及延伸总结...

    如果你发现你自己需要在 vue 中做一次强制更新,99.9% 的情况,是你在某个地方做错了事. 1. vue 无法检测实例被创建时不存在于 data 中的 property 原因:由于 vue 会在初 ...

  3. vue连接后端本地接口_详解vue配置后台接口方式

    详解vue配置后台接口方式 在vueAdmin项目中有两种方式配置后端接口的方式,在此做下记录 第一种(代理方式) 在工程目录下 > config > index.js - 修改为如下配置 ...

  4. vue 变量定义 对象_详解Vue 全局变量,局部变量

    局组件和局部组件 1.先定义组件   Vue.component('组件名', { 组件模板对象 }) 注意: 组件名不要使用原生的标签名, 若组件名定义时用的是驼峰命名法, 则调用时用中划线分割后小 ...

  5. vue底部跳转_详解Vue底部导航栏组件

    不多说直接上代码 BottomNav.vue: {{item.name}} export default{ props:['idx'], data(){ return { items:[{ cls:& ...

  6. vue样式 引入图片_详解Vue.js中引入图片路径的几种方式

    vue --version 3.6.3 记录总结一下的Vue中引入图片路径的几种书写方式 vue中静态资源的引入机制 Vue.js关于静态资源的官方文档 静态资源可以通过两种方式进行处理: 在 Jav ...

  7. vue 修改模板{{}}标签_详解Vue 动态添加模板的几种方法

    以下方法只适用于 Vue1.0 版本,推荐系数由高到低排列. 通常我们会在组件里的 template 属性定义模板,或者是在*.vue文件里的 template 标签里写模板.但是有时候会需要动态生成 ...

  8. vue传递数组对象_详解vue组件三大核心概念

    前言 本文主要介绍属性.事件和插槽这三个vue基础概念.使用方法及其容易被忽略的一些重要细节.如果你阅读别人写的组件,也可以从这三个部分展开,它们可以帮助你快速了解一个组件的所有功能. 本文的代码请猛 ...

  9. vue warning如何去掉_详解 vue 组件三大核心概念

    前言 本文主要介绍属性.事件和插槽这三个vue基础概念.使用方法及其容易被忽略的一些重要细节.如果你阅读别人写的组件,可以从这三个部分展开,它们可以帮助你快速了解一个组件的所有功能. 本文的代码请猛戳 ...

最新文章

  1. Lua学习笔记6:C++和Lua的相互调用
  2. auto自动类型推断
  3. 【双百解法】2058. 找出临界点之间的最小和最大距离——Leecode周赛系列
  4. python删除指定天数前的文件_python 删除指定时间间隔之前的文件实例
  5. linux开发需要学习什么,linux开发需要掌握哪些知识?
  6. Docker下redis的主从配置
  7. 小王,在 Java 中如何利用 redis 实现一个分布式锁服务呢???
  8. 互联网日报 | 腾讯地图全国上线聚合打车服务;国庆档首日票房突破7亿;特斯拉国产Model3再降价...
  9. 超大流量分布式系统架构解决方案 人人都是架构师2.0
  10. 神战奇迹私服进游戏选择服务器显示数字,最新mu手游奇迹sf发布
  11. 【机器学习】简单关联分析算法-Apriori algorithm
  12. YS-LDV7语音识别模块使用手册
  13. 逃离北京一年后再次回归: 一个PHP工程师的自白
  14. 分布式(四)——了解PRC
  15. 详解 C/C++ 各大编程规范
  16. ultraedit删除重复项_UltraEdit技巧总结
  17. C语言汉字gbk转utf-8
  18. SpringBoot--日志配置--application.yml
  19. HTML怎么制作镂空文字遮罩,用纯 CSS 实现镂空效果
  20. 光束传输 matlab,matlab仿真光束的传输特性

热门文章

  1. JUnit ExpectedException规则:超越基础
  2. 扩展Guava缓存溢出到磁盘
  3. 窥探JBoss Fuse 6.1的新功能
  4. Activiti中的高级脚本:自定义配置注入
  5. 从RSS Feed和YQL创建数据表
  6. 您好GroovyFX
  7. Java 7:如何编写非常快速的Java代码
  8. MySQL的set names命令详解
  9. MySQL 如何复制表
  10. Java的超类/基类Object