vue中原生file上传图片
效果

视图层
<el-form-item class="file-box"
label="微信分享图片url链接"
prop="wx_share_img_url">
<input ref="shareFile"
class="file-item wx-file-item"
type="file"
@change="changeImg" >
<div class="el-input__inner">
{{ form.wx_share_img_url }}
<el-button size="small"
type="primary">点击上传</el-button>
</div>
</el-form-item>
<el-form-item class="file-box"
label="额外参数(目前用于app活动页图片地)"
prop="extra">
<input ref="extraFile"
class="file-item"
type="file"
@change="changeImg" >
<div class="el-input__inner">
{{ form.extra }}
<el-button size="small"
type="primary">点击上传</el-button>
</div>
<!-- <img ref="imgzs"
src="" > -->
</el-form-item>
method
// 上传图片
changeImg(e) {
console.log(e, '')
var that = this
var file = e.target.files[] || e.dataTransfer.files[]
var fileSize = file.size || file.fileSize
var fileName = file.name
var len = e.target.classList.length
console.log(file.size, '')
if (file.name.lastIndexOf('.') === -) {
this.$message.info('路径不正确')
return false
}
var AllImgExt = '.jpg|.jpeg|.gif|.bmp|.png|.swf'
var extName = file.name.substring(file.name.lastIndexOf('.')).toLowerCase()
if (AllImgExt.indexOf(extName + '|') === -) {
this.$message.info('非法图片格式')
return false
}
if (fileSize < ) {
if (window.FileReader) {
var reader = new FileReader()
reader.readAsDataURL(file)
reader.onload = (e) => {
console.log(e.target + 'img')
console.log(e.target.result + 'img')
// that.$refs.imgzs.src = e.target.result
if (len > ) {
that.form.wx_share_img_url = fileName
that.formData.set('share_img', file)
console.log(file, 'share_img')
// that.formData.set('share_img', e.target.result)
} else {
console.log(file, 'list_img')
that.form.extra = fileName
that.formData.set('list_img', file)
}
$('#imgshow').get(0).src = e.target.result;
that.isUploadImg = true
}
}
} else {
this.$message.info('图片大小超过限制')
return false
}
}
注意:多个文件上传图片时使用class的长度进行判断
使用new FileReader()对象是为了实现图片预览功能
,如果需要传图片的路径给后端是用 e.target.result 读取,这个读取出来的值是base64位可以直接在页面上渲染预览图片,如果是后端需要原生的值就是传
e.target.files[0] || e.dataTransfer.files[0] 具体见后台活动列表编辑
vue中原生file上传图片的更多相关文章
- vue <input type="file">上传图片、预览、删除
使用原生<input type="file">上传图片.预览.删除:multiple实现可上传多张 参数名 类型 说明 fileTypes Array 文件类型, 默认 ...
- 原生js中获取this与鼠标对象以及vue中默认的鼠标对象参数
1.通过原生js获取this对象 <!DOCTYPE html> <html> <head> <meta charset="utf-8" ...
- Vue中如何监听组件的原生事件
在首页开发中,右下角有一个返回顶部的小箭头,将它单独封装成一个BackTop组件,但是它何时出现需要依赖于首页的滑动,即另外一个Scroll组件.如果直接在BackTop组件里面监听,则需要通过thi ...
- jquery解决file上传图片+图片预览
js解决file上传图片+图片预览 demo案例中代码为js原生控制,可以根据项目的需求修改为jquery操作 <!DOCTYPE html><html lang="en& ...
- .NET压缩图片保存 .NET CORE WebApi Post跨域提交 C# Debug和release判断用法 tofixed方法 四舍五入 (function($){})(jQuery); 使用VUE+iView+.Net Core上传图片
.NET压缩图片保存 需求: 需要将用户后买的图片批量下载打包压缩,并且分不同的文件夹(因:购买了多个用户的图片情况) 文章中用到了一个第三方的类库,Nuget下载 SharpZipLib 目前用 ...
- 使用VUE+iView+.Net Core上传图片
我们直接进入主题,使用VS2017开发工具 首先要创建一个WebApi项目,创建完之后,在wwwroot文件下,创建一个文件夹 名字可以随意起 我这里呢就叫做Upload了 ok ! 然后我们再创建 ...
- vue中使用axios post上传头像/图片并实时显示到页面
在前端开发中,为了更好的用户体验,在头像上传时会先将图片显示到页面然后点击保存按钮 完成图片的上传成功 代码部分有参考他人的写法. html代码: <div id="myPhoto ...
- vue中使用Ajax(axios)、vue函数中this指向问题
Vue.js 2.0 版本推荐使用 axios 来完成 ajax 请求.Axios 是一个基于 Promise 的 HTTP 库,可以用在浏览器和 node.js 中. axios中文文档库:http ...
- vue中的文件上传和下载
文件上传 vue中的文件上传主要分为两步:前台获取到文件和提交到后台 获取文件 前台获取文件,主要是采用input框来实现 <el-dialog :title="addName&quo ...
随机推荐
- 【.NET】SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM之间
#背景 向sqlserver数据库中一个datetime字段插入DateTime.MinValue时, 出现问题: SqlDateTime 溢出.必须介于 1/1/1753 12:00:00 AM 和 ...
- Java基础之IO流学习总结
Java流操作有关的类或接口: Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...
- Oracle DataBase 编码格式
sqlplus 查询 Oracle 数据库结果乱码或显示 ? 则需要设置字符集 一.客户端字符集 格式:NLS_LANG=language_territory.charset Language: 指定 ...
- 跳到IE9的一个坑里了(枚举 JavaScript 属性)
有一段Json如下 [{"SaleName_ID":"0","SaleName":"","28":& ...
- android studio导出apk
在android studio导出的apk分为4种,一种是未签名调试版apk,一种是未签名发行版apk,一种是已签名调试版apk,还有一种是已签名发行版apk.以下将介绍这4种apk如何导出. 一.调 ...
- 905. Sort Array By Parity
Description Given an array A of non-negative integers, return an array consisting of all the even el ...
- 分布式中的 transaction log
分布式中的 transaction log 在分布式系统中,有很多台node组成一个cluster,对于client 的一个写操作请求而言,在什么样的情况下,cluster告诉client此次写操作请 ...
- Greendao 缓存问题
GreenDao在使用过程中如果查询数据后,修改数据,再次查询的话,使用的是刚才修改后的数据,为了避免这个问题,要清除缓存,清除缓存有两种方法 1.daoSession.clear(); 2.dao. ...
- 九、uboot 代码流程分析---relloc_code
执行完 board_init_f 后,重新跳转回 _main 中执行. 9.1 relloc_code 前 9.1.1 gd 设置 在调用board_init_f()完成板卡与全局结构体变量 gd 的 ...
- mybatis-configxml样板
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC & ...