vue 图片上传
时间:2019-11-12
本文章向大家介绍vue 图片上传,主要包括vue 图片上传使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
功能说明:
1、调用手机拍照功能
2、调用相册功能
3、图片上传功能
4、图片预览功能
5、图片删除功能
记录个多图上传组件,关键点:
1、input 新增multiple
2、accept="image/*处理IOS、安卓手机启用摄像头
3、根据createObjectURL处理图片预览
4、formData构造函数创建空对象
5、通过formData.getAll(),把文件流数据转为数组
组件示例图
组件代码 upload_img.vue
<template> <div class="content"> <div class="imgBox"> <div class="uploadBox" v-for="(value, key) in imgs" :key="'uploadBox' + key"> <img :src="getObjectURL(value)" alt="" class="uploadImg"> <img src="../../assets/images/icon_x.png" alt="" class="closeImg" @click='delImg(key)'> </div> <div class="inputButton"> <img src="../../assets/images/icon_photo.png" alt="" class="addImg"> <input type="file" class="upload" @change="addImg" ref="inputer" multiple accept="image/*"/> </div> <div class="submitTask" @click="submit"> 上传图片 </div> </div> </div> </template>
js:
export default ({ name: 'uploadPicture', data: function() { return { formData: new FormData(), imgs: {}, imgLen: 0, txtVal: 0, desc: '' } }, created() { }, methods: { descInput() { // this.txtVal = this.desc.length; }, addImg(event) { let inputDOM = this.$refs.inputer // 通过DOM取文件数据 this.fil = inputDOM.files // console.log(inputDOM.files) let oldLen = this.imgLen for (let i = 0; i < this.fil.length; i++) { let size = Math.floor(this.fil[i].size / 1024) if (size > 5 * 1024 * 1024) { alert('请选择5M以内的图片!') return false } this.imgLen++ this.$set(this.imgs, this.fil[i].name + '?' + new Date().getTime() + i, this.fil[i]) // console.log(this.imgs) } console.log('this.fil', this.fil) // this.imgs = this.fil }, getObjectURL(file) { var url = null if (window.createObjectURL !== undefined) { // basic url = window.createObjectURL(file) } else if (window.URL !== undefined) { // mozilla(firefox) url = window.URL.createObjectURL(file) } else if (window.webkitURL !== undefined) { // webkit or chrome url = window.webkitURL.createObjectURL(file) } return url }, delImg(key) { this.$delete(this.imgs, key) this.imgLen-- }, // 提交上传图片 submit() { for (let key in this.imgs) { let name = key.split('?')[0] this.formData.append('file', this.imgs[key]) } this.formData.getAll('file') console.log('this.formData', this.formData) this.$refund.upload(this.formData) } } }) </script>
说明:
图片上传完成后,使用getObjectURL来作预览功能处理。
温馨提示:
formData.getAll最后返回来的是一个数组
样式:
<style lang="less"> // 外部盒子样式 .content { width: 100%; padding: 0.16rem 0 !important; .imgBox { display: flex; display: -webkit-flex; flex-direction: row; justify-content: flex-start; align-items: center; flex-wrap: wrap; } } // 预览图片样式 .uploadBox { position: relative; width: 30%; text-align: left; margin-right: 0.1rem; margin-bottom: 0.05rem; // 预览样式 .uploadImg { width: 100%; height: 100%; display: block; overflow: hidden; } // 删除按钮 .closeImg { width: 0.2rem; height: 0.2rem; position: absolute; top: 2%; right: 1%; } } // 上图图片icon .inputButton { position: relative; display: block; width: 1.2rem; height: 1.2rem; // 上传图片样式 .addImg { display: block; width: 1.2rem; height: 1.2rem; } // input样式 .upload { width: 1.2rem; height: 1.2rem; opacity: 0; position: absolute; top: 0; left: 0; z-index: 100; } } // 提交按钮 .submitTask { margin: auto; background: #EF504D; width: 30%; height: 0.3rem; color: #fff; font-size: 0.16rem; line-height: 0.3rem; text-align: center; border-radius: 0.1rem; margin-top: 0.8rem; } </style>
欢迎关注公众号,进一步技术交流:
原文地址:https://www.cnblogs.com/cczlovexw/p/11833930.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法