el-upload组件说明汇总,实现上传、点击下载、删除功能等

<el-upload
	  class="upload-demo"
	  action="/admin/sys-file/upload"      //文件上传路径
	  :headers="headers"       //请求头配置信息
	  :file-list="fileList"         //上传的文件显示列表, 格式如: [{name: 'food.jpg', url: 'https://xxx.cdn.com/xxx.jpg'}]
	  :limit="5"          //设置最大允许上传个数
 	  :on-exceed="handleExceed"   //文件超出个数限制时的钩子
	   accept=".doc,.docx,.xls,.xlsx,.ppt,.pptx"    //接受上传的文件类型
	  :before-upload="beforeUpload"   //上传文件之前的钩子,判断文件大小和格式是否符合
      :before-remove="beforeRemove"   //删除文件之前的钩子,若返回 false 或者返回 Promise 且被 reject,则停止删除停止执行handleRemove事件
	  :on-remove="handleRemove"   //文件列表移除文件时的钩子
	  :on-preview="handlePreview"    //点击文件列表中已上传的文件时的钩子
	  :on-success="handleSuccess">
	  <el-button size="small" type="primary">上传文件</el-button>
	  <div slot="tip" class="el-upload__tip">最多可上传5个,文件大小不超过50MB</div>
</el-upload>


import store from '@/store'
data() {
   return {
   		fileList:[],
        headers: {
            Authorization: 'Bearer ' + store.getters.access_token,
            'TENANT-ID': '1564020210'
        }
},
methods: {
	//点击文件列表中已上传文件进行下载
    handlePreview(file) {
      var a = document.createElement('a');
      var event = new MouseEvent('click');
      a.download = file.name;
      a.href = file.url;
      a.dispatchEvent(event);
      console.log(file)
    },
	//上传文件大小和格式校验
    beforeUpload(file){
        var fileType =file.name.substring(file.name.lastIndexOf('.')+1)
        const isFile =
            fileType === "doc" ||
            fileType === "docx" ||
            fileType === "xls" ||
            fileType === "xlsx" ||
            fileType === "ppt" ||
            fileType === "pptx"
        if (!isFile) {
            this.$message.error("请选择正确的文件格式")
            return false
        }
        
        const isLt50M = file.size / 1024 / 1024 < 50
        if (!isLt50M) {
            this.$message.error("上传图片大小不能超过 50MB!")
        }
        return isLt50M && isFile
    },
    
    //文件超出限制个数提示
    handleExceed(files, fileList) {
      this.$message.warning(`当前限制选择 3 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`);
    },
      
    //上传成功
    handleSuccess(res, file, fileList){
        let fileSize=res.data.fileSize/1024/1024
        this.fileList.push({
            name: file.name,
            fileSize:fileSize,
            url:  res.data.bucketName + '/' + res.data.fileName
        })
        console.info(fileList,"fileList")
    },     
    
    //文件移除操作
    beforeRemove(file, fileList) {
      if(this.status=='view'){
        this.$message.warning('不允许删除!')
        return false
      }else{
        return true
      }
    },
    //文件移除操作
    handleRemove(file, fileList){
        this.fileList=fileList
    },     
    
    //点击文件列表中已上传文件进行下载
    handlePreview(file) {
      var a = document.createElement('a');
      var event = new MouseEvent('click');
      a.download = file.name;
      a.href = file.url;
      a.dispatchEvent(event);
      console.log(file)
    },
}

一、限制上传文件个数

可通过设置limit和on-exceed来限制上传文件的个数和定义超出限制时的行为。
在这里插入图片描述

二、 限制上传的图片格式和大小

使用 before-upload 限制用户上传的图片格式和大小。
在这里插入图片描述

三、点击已上传文件进行下载

实现这个功能主要用到element的on-preview钩子函数
在这里插入图片描述

四、查看时,不允许删除文件

主要用到before-remove 删除文件之前的钩子,参数为上传的文件和文件列表,若返回 false ,则停止删除,不在执行:on-remove="handleRemove"事件。
在这里插入图片描述

五、查看编辑显示后台保存已上传文件

查看和编辑按钮事件如下:
只需将存入后台的数据再放入this.fileList数组中即可。

rowEditForm(row, index){
    this.fileList=[]
	getFileList(row.id).then(res=>{
      var data= res.data.data
       if(data!=null&&data.length>0){
           for(var i=0;i<data.length;i++){
               this.fileList.push({
                   name: data[i].name,
                   fileSize:data[i].fileSize,
                   url:  data[i].url
               })
           }
       }
   })
}

原文连接: https://blog.csdn.net/weixin_44770377/article/details/107078454

  • 15
    点赞
  • 68
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
前端Vue项目中,使用`el-upload`组件可以实现图片上传功能。以下是一个简单的实现步骤: 1. 在Vue组件中引入`el-upload`组件: ``` <template> <el-upload class="upload-demo" action="/api/upload" :on-success="handleSuccess" :file-list="fileList" :limit="3" :multiple="true" :show-file-list="false" :auto-upload="false"> <el-button size="small" type="primary">点击上传</el-button> <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过3个文件</div> </el-upload> </template> ``` 在上述代码中,`action`属性指定了上传文件的后端接口地址,`:on-success`属性指定了上传成功后的回调函数,`:file-list`属性指定了上传文件列表,`:limit`属性指定了上传文件的数量限制,`:multiple`属性指定了是否支持多选,`:show-file-list`属性指定了是否显示已上传文件列表,`:auto-upload`属性指定了是否自动上传。 2. 实现上传文件的回调函数: ``` methods: { handleSuccess(res, file) { console.log(res); // 后端返回的上传结果 console.log(file); // 上传的文件对象 // 将上传成功的文件添加到文件列表中 this.fileList.push({ name: file.name, url: res.data.url }); } } ``` 在上述代码中,`handleSuccess`函数接收两个参数:`res`表示后端返回的上传结果,`file`表示上传的文件对象。在函数中,我们将上传成功的文件添加到文件列表中。 3. 后端接口实现: 在后端Flask应用中,可以使用`Flask-Uploads`等第三方库来实现文件上传功能。以下是一个简单的实现代码: ``` from flask import Flask, request, jsonify from flask_uploads import UploadSet, IMAGES, configure_uploads app = Flask(__name__) # 配置文件上传 app.config['UPLOADED_PHOTOS_DEST'] = 'uploads/images' photos = UploadSet('photos', IMAGES) configure_uploads(app, photos) @app.route('/api/upload', methods=['POST']) def upload(): file = request.files['file'] if file: filename = photos.save(file) url = photos.url(filename) return jsonify({'code': 0, 'msg': '上传成功', 'data': {'url': url}}) else: return jsonify({'code': -1, 'msg': '上传失败'}) ``` 在上述代码中,`UPLOADED_PHOTOS_DEST`配置项指定了文件上传后的保存路径,`photos`对象表示上传文件的集合,`upload`函数实现上传文件的功能。在函数中,我们首先获取上传的文件对象,然后使用`photos.save`将文件保存到指定路径,并使用`photos.url`获取文件的访问URL,最后返回上传结果。 以上就是使用`el-upload`组件实现图片上传功能的简单实现步骤。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值