一份屎山版的图片上传

<template><!--图片上传个数 max图片预上传列表 fileList图片上传和回显容器 upLoadListref提交图片的方法 submitHandler--><div style="display: flex"><div><draggable:list="fileList":disabled="!enabled"class="list-group myImgList"ghost-class="ghost":move="checkMove"@start="dragging = true"@end="dragging = false":animation="500"><div class="list-group-item smallImg" v-for="element in fileList" :key="element.name"><el-image :src="element.url" style="border-radius: 5px" :preview-src-list="[element.url]"/><span class="el-icon-circle-close" @click="upLoadRemove(element,fileList)"></span></div></draggable></div><div><el-upload:limit="max"class="picture-cardimgs imageUrls":on-preview="handlePictureCardPreview":auto-upload="false"multipleaction="#":on-change="uploadChange":on-remove="upLoadRemove":on-exceed="handleExceed":file-list="fileList"list-type="picture-card":show-file-list="false"><el-dialog :visible.sync="dialogImg" :modal="false"><img width="100%" :src="dialogImageUrl" alt=""></el-dialog><div slot="trigger" class="imageUrlsAdd"><i class="el-icon-plus"></i></div></el-upload></div><div><el-button size="mini" type="primary" @click="submitHandler" style="margin: 25px 0 0 10px">确 定</el-button></div></div>
</template><script>
import { uploadKodoApi } from '@/api/system/afterSale'
import draggable from 'vuedraggable'export default {components: { draggable },props: {max: {type: Number,// 类型required: false,//必填default: 5//默认值},upLoadList: {type: Array,// 类型required: false,//必填default: () => {}//默认值}},data() {return {//拖拽相关enabled: true,dragging: false,// 图片相关fileList: this.upLoadList,dialogImageUrl: [],dialogImg: false,}},methods: {//拖拽checkMove: function(e) {window.console.log('Future index: ' + e.draggedContext.futureIndex)},//===============图片上传==============// 移除附件upLoadRemove(file, fileList) {let tempFileList = []for (var index = 0; index < fileList.length; index++) {if (this.fileList[index].name !== file.name) {tempFileList.push(this.fileList[index])}}this.fileList = tempFileList},handlePictureCardPreview(file) {this.dialogImageUrl = file.urlthis.dialogImg = true},// 监控上传文件列表uploadChange(file, fileList) {let existFile = fileList.slice(0, fileList.length - 1).find((f) => f.name === file.name)if (existFile) {this.$message.error('当前文件已经存在!')fileList.pop()}this.fileList = fileList},//  :on-exceed="handleExceed"// 选取文件超过数量提示handleExceed(files, fileList) {this.$message.warning(`限制选择 5 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`)},// 上传图片到服务器  formidable接收async submitUpload() {let formData = new FormData()this.fileList.forEach((item) => {formData.append('files', item.raw)})try {let result = await uploadKodoApi(formData) // 图片console.log('图片列表', result.data)this.$emit('update:upLoadList',result.data)} catch (error) {}},// 上传submitHandler() {//this.submitUpload()},},watch: {dialogImg: {handler(nval, oval) {console.log('dialogImg', nval)}, deep: true, immediate: true},dialogImageUrl: {handler(nval, oval) {console.log('dialogImageUrl', nval)}, deep: true, immediate: true},fileList: {handler(nval, oval) {console.log('fileList', nval)}, deep: true, immediate: true},upLoadList: {handler(nval, oval) {console.log('upLoadList', nval)}, deep: true, immediate: true}}
}
</script><style scoped>
/*列表样式*/
.myImgList {display: flex;
}/*展示图样式*/
.smallImg {width: 60px;height: 60px;position: relative;margin-left: 3px;margin-right: 3px;
}.smallImg span {display: none;
}.smallImg:hover span {display: block;position: absolute;right: 0;top: 5px;
}/* 图片上传*/
>>> .imageUrls .el-upload-list__item {width: 60px;height: 60px;
}>>> .imageUrls .el-upload-dragger {height: 60px;width: 60px;
}>>> .imageUrls .el-upload--picture-card {margin-top: 10px;height: 60px;width: 60px;
}>>> .imageUrls .el-upload__text {}/*添加图片 加号*/
.imageUrlsAdd {display: flex;justify-content: center;align-items: center;height: 100%;line-height: 60px;
}
</style>

基于vue+el-upload图片上传(自用屎山)相关推荐

  1. vue+element实现图片上传及裁剪功能(vue-cropper)

    需求背景: 上传图片或者头像时,能够将图片进行裁剪(等比例缩放裁剪或非等比例裁剪) 效果图: 安装使用 1.安装 npm install vue-cropper // npm 安装 yarn add ...

  2. think php上传图片,基于ThinkPHP5.0实现图片上传插件

    这篇文章主要介绍了关于基于ThinkPHP5.0实现图片上传插件,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 thinkphp5.0 图片上传插件可预览裁剪图片和保存原图片,执行裁剪 ...

  3. 用Vue来实现图片上传多种方式

    项目中需要上传图片可谓是经常遇到的需求,本文将介绍 3 种不同的图片上传方式,在这总结分享一下,有什么建议或者意见,请大家踊跃提出来. 没有业务场景的功能都是耍流氓,那么我们先来模拟一个需要实现的业务 ...

  4. 拖拽文件夹上传 一(基于Vue的文件夹上传组件)

    前言 首先说一下,小弟第一次写文章,如果有什么错误 还望小哥哥 小姐姐多多包涵.如果有什么缺陷还望大家指出来 让小弟多学习. 内容划分 上传文件夹一共分两部分来写 一方面怕太长了 大家看五分钟就不想看 ...

  5. vue 实现压缩图片上传到oss

    我们偶尔会在项目中碰到上传的需求,对于部分前端开发人员来说,上传资源是一个比较头疼的事情,你要根据各种不同的UI设计,设计出相应的上传页面样式,上传的地址不一样,可能你的处理就会不一样.你可能选择使用 ...

  6. vue移动端图片上传

    一.服务端环境准备 本文服务端主要为nodejs,利用multer中间件完成图片上传功能.服务端安装express框架和multer. npm install express --save npm i ...

  7. java图片加水印上传工具类_基于Spring Boot实现图片上传/加水印一把梭操作

    文章共537字,阅读大约需要 2分钟 ! 概述 很多网站的图片为了版权考虑都加有水印,尤其是那些图片类网站.自己正好最近和图片打交道比较多,因此就探索了一番基于 Spring Boot这把利器来实现从 ...

  8. vue element 单张图片上传,删除,预览

    功能点: 点击'查看图片'按钮,弹窗中会展示图片,第一次看到的图片是从父组件传过来的图片,点击删除按钮,调取删除接口删除图片,在重新上传图片,data中放入列表那一项的数据,上传成功,图片需要回显,此 ...

  9. el-element照片墙,upload图片上传

    效果: 官方文档示例 注解: list-type:上传之后,图片的显示类型,有三种text.picture.picture-card. --text类型显示为文本类型,预览时不能看到上传的图片-- p ...

最新文章

  1. Activity栈管理(三):Intent的Flag与taskAffinity
  2. python数据分析视频网盘-微专业Python数据分析实战
  3. 为LUKS加密的磁盘/分区做增量备份
  4. 初见shell,设置端口参数
  5. javascript使用btoa和atob来进行Base64转码和解码
  6. 算法设计与分析———动态规划———最大子段和
  7. 技术分享连载(六十一)
  8. 达梦数据库连接(单机、多实例、多数据源版本)
  9. 2019年10月数据库流行度排行:国产数据库鲲鹏正举 PostgreSQL同比增幅第一
  10. 主流H.264编码器对比测试 (MSU出品)
  11. maters鸿蒙系统,Flutter入门进阶之旅(十)DialogToast
  12. double-talk检测算法分类
  13. Uploading File using Ajax and receiving binary data in Asp.net (C#)[转]
  14. 爬虫实例十四 多线程爬取一万张表情包
  15. 手机12306买卧铺下铺技巧_手机12306怎么买下铺
  16. OpenStack历史知识
  17. Unity 镜面反射
  18. 从u盘引导进入linux6,使用U盘启动安装U盘内linux6.1
  19. ubuntu 安装多版本cuda,及切换版本方法及常见问题记录
  20. 人脸识别之人脸验证(一)--Deepface

热门文章

  1. 秋天,小溪潺潺,古老的树上黄叶灿灿,阳光像一个魔法师,在树叶间流动,远山,云天,充满秋阳的光线。以此景观做一首诗...
  2. 小程序 6位数密码输入
  3. 【转载】一个游戏地图生成的方案
  4. 【华为OD机试 2023】二元组个数(C++ 100%)
  5. php身份证注册判断重名,同名同姓测试,全国公民身份信息系统库查重名
  6. CSDN博主排行榜上线!
  7. meld的使用 Ubuntu入门之六
  8. linux服务器磁盘空间扩充
  9. QQ小程序 应用类型不匹配
  10. iphonex适配游戏_iPhoneX王者荣耀适配问题 iPhoneX游戏问题详解