上传图片、预览、删除" /> 上传图片、预览、删除 - 秒客网" />

vue 上传图片、预览、删除

时间:2022-02-25 00:27:59

使用原生<input type="file">上传图片、预览、删除;multiple实现可上传多张

参数名 类型 说明
fileTypes Array 文件类型, 默认'jpeg','bmp','gif','jpg'
limit Number 限制数量,默认5
size Number 最大图片大小,默认5M
@imgs Object 上传的图片文件

html部分

<template>
<div class="form-group">
<label class="control-label">上传图片</label>
<div class="control-form">
<p class="help-block">(建议图片格式为:JPEG/BMP/PNG/GIF,大小不超过5M,最多可上传4张)</p>
<ul class="upload-imgs">
<li v-if="imgLen>=4 ? false : true">
<input type="file" class="upload" @change="addImg" ref="inputer" multiple accept="image/png,image/jpeg,image/gif,image/jpg"/>
<a class="add"><i class="iconfont icon-plus"></i><p>点击上传</p></a>
</li>
<li v-for='(value, key) in imgs'>
<p class="img"><img :src="getObjectURL(value)"><a class="close" @click="delImg(key)">×</a></p>
</li>
</ul>
</div>
</div>
</template>

js部分

<script>
export default {
data() {
return {
formData:new FormData(),
imgs: {},
imgLen:0,
}
},
methods: {
addImg(event){
let inputDOM = this.$refs.inputer;
// 通过DOM取文件数据
this.fil = inputDOM.files;
let oldLen=this.imgLen;
let len=this.fil.length+oldLen;
if(len>4){
alert('最多可上传4张,您还可以上传'+(4-oldLen)+'张');
return false;
}
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]);
}
},
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('multipartFiles',this.imgs[key],name);
}
this.$http.post('/opinion/feedback', this.formData,{
headers: {'Content-Type': 'multipart/form-data'}
}).then(res => {
this.alertShow=true;
});
},
}
}
</script>

css部分

.upload-imgs{margin: 10px 0 30px 0;overflow: hidden;font-size: 0;}
.upload-imgs li{position: relative;width: 118px;height: 118px;font-size: 14px;display: inline-block;padding: 10px;margin-right: 25px;border: 2px dashed #ccc;text-align: center;vertical-align: middle;}
.upload-imgs li:hover{border-color: $them-color;}
.upload-imgs .add{display: block;background-color: #ccc;color: #ffffff;height: 94px;padding: 8px 0;}
.upload-imgs .add .iconfont{padding: 10px 0;font-size: 40px;}
.upload-imgs li:hover .add{background-color: $them-color;}
.upload-imgs li .upload{position: absolute;top: 0;bottom: 0;left: 0;right: 0;width: 118px;height: 118px;}
.upload-imgs .img{position: relative;width: 94px;height: 94px;line-height: 94px;}
.upload-imgs .img img{vertical-align: middle;}
.upload-imgs .img .close{display: none;}
.upload-imgs li:hover .img .close{display: block;position: absolute;right: -6px;top: -10px;line-height: 1;font-size: 22px;color: #aaa;}

vue <input type="file">上传图片、预览、删除

vue <input type="file">上传图片、预览、删除的更多相关文章

  1. 前端实现input&lbrack;type&equals;&&num;39&semi;file&&num;39&semi;&rsqb;上传图片预览效果

    众所周知JavaScript在设计上处于安全角度考虑,是不允许读写本地文件的(原因请自行百度): 但是在实际项目应用中,经常会使用到上传图片,并且可以让用户直接预览图片.对于此种做法有两种方法可以实现 ...

  2. 一、H5&lpar;移动端&rpar;前端使用input type&equals;file 上传图片,调用相机和相册

    一.H5(移动端)前端使用input type=file 上传图片,调用相机和相册

  3. input&lbrack;type&equals;file&rsqb;上传图片及转为base64码以及预览

    <input type="file" id="imgurl" capture="camera" accept="image/ ...

  4. input file上传图片预览,非插件

    Input标签 <input type="file" name="pic" onchange="changepic(this)" mu ...

  5. input&lbrack;type&equals;&quot&semi;file&quot&semi;&rsqb;上传图片并显示图片

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  6. 关于input type&equals;file上传图片的总结

    最近比较忙,现在来整理一下近期的成果,方便以后再次使用. 关于图片上传的js 和jq jq $("input").change(function () { var $file = ...

  7. 解决JS&lpar;Vue&rpar;input&lbrack;type&equals;&&num;39&semi;file&&num;39&semi;&rsqb; change事件无法上传相同文件的问题

    Html <input id="file" type="file" accept=".map" onchange="uplo ...

  8. vue 结合 FileReader&lpar;&rpar; 实现上传图片预览功能

    项目中 身份证上传需求: <div class="ID_pic_wrap"> <ul> <li> <img src="../.. ...

  9. input type &equals; file 上传图片转为base64

    项目背景是做图片识别,接口需要上传图片格式为base64格式的,react项目的相关代码: let reader = new FileReader();reader.readAsDataURL(e.t ...

随机推荐

  1. wubi安装ubuntukylin-14&period;04

    自ubuntukylin-14.04发布以来一直想体验一下,正好五一休假有了时间,在经历了一番坎坷后终于安装成功.安装环境为Win7家庭高级版,至于采用wubi方式安装,只因Linux水平差和图省事, ...

  2. HTML5之语义标签

    在HTML5标准中,新加了几个用于增添页面语义的标签,这些标签有:article.section.nav和aside等.与别的大多数标签不 同,浏览器在解释渲染这些标签的时候仅仅把它作为普通的div块 ...

  3. 【Android】如何将eclipse工程导入studio

    1.eclipse工程右键->export->Generate Gradle build files 2.studio->New->import project->选择工 ...

  4. Aho-Corasick算法、多模正则匹配、Snort入门学习

    希望解决的问题 . 在一些高流量.高IO的WAF中,是如何对规则库(POST.GET)中的字符串进行多正则匹配的,是单条轮询执行,还是多模式并发执行 . Snort是怎么组织.匹配高达上千条的正则规则 ...

  5. Jboss 集群配置

    环境配置:CentOS 7 x64 * 3 IP:  172.24.0.100        172.24.0.101        172.24.0.102 服务器配置: 172.24.0.100 ...

  6. Docker 核心技术之镜像

    镜像简介 镜像是一个Docker的可执行文件,其中包括运行应用程序所需的所有代码内容.依赖库.环境变量和配置文件等. 通过镜像可以创建一个或多个容器. 镜像搜索 - docker search 作用: ...

  7. SELinux入门简介

    操作系统有两类访问控制:自主访问控制(DAC)和强制访问控制(MAC).标准Linux安全是一种DAC,SELinux为Linux增加了一个灵活的和可配置的的MAC. 进程启动时所拥有的权限就是运行此 ...

  8. PHP交互数据库

    教程 图形化界面访问自己的服务器上数据库 http://ip/phpmyadmin php文件 运行 <?php $servername = "localhost"; $us ...

  9. How Flyway works

    The easiest scenario is when you point Flyway to an empty database. It will try to locate its schema ...

  10. bzoj 1115&colon; &lbrack;POI2009&rsqb;石子游戏Kam -- 博弈论

    1115: [POI2009]石子游戏Kam Time Limit: 10 Sec  Memory Limit: 162 MB Description 有N堆石子,除了第一堆外,每堆石子个数都不少于前 ...