vue+element+upload上传图片+手动移除

< el-upload 
		 class="upload-demo" 
		 action="#" 
		 :on-success="handleAvatarSuccess" 
		 :on-preview="handlePreview" 
		 :before-remove="beforeRemove" 
		 multiple 
		 :before-upload="ZCbeforeUpload" 
		 :on-remove="handleRemove" 
		 :file-list="fileList">
		< el-button  size="small" type="primary">< i class="el-icon-upload" >< /i>上传文件</ el-button>
		//提示语。根据实际情况写
		 < div slot="tip" class="el-upload__tip" style="color:#8A898A">仅支持上传图片或PDF格式文件</ div>
	</ el-upload>
 **:before-upload="beforeUpload"** 
 上传文件之前的钩子,参数为上传的文件,若返回 false 或者返回 Promise 且被 reject,则停止上传。
**beforeUpload**(file) {
如果内容较大,加个loading比较好
      this.loading = true;
      let fd = new FormData();
      var that = this;
      fd.append("file", file); //传文件
      如果有其他参数就是这样继续写 fd.append("id", 5); //其他参数
      that.$http.post("/upload", fd).then(function (res) {
        if (res.data.code == "200") {
          that.loading = false;
          that.$message.success("上传成功");
          //将需要的存到数组。
          that.fileList.push({
	            name: res.data.newFileName,
	            filepath: res.data.fileName,
	            url: res.data.url,
	          });
        }
      });
      //这步我是用于回显。控制台会报错,不影响。但是不好看。(如果有更好的请指教)
  that.imageUrl = window.URL.createObjectURL(file.raw);
},
//移除   
//on-remove	文件列表移除文件时的钩子。我移除没有走接口。就得手动移除
//file-List  上传的文件列表, 例如: [{name: 'food.jpg', url: 'https://xxx.cdn.com/xxx.jpg'}].
(如果一个页面有多个上传。fileList不可以同名字。或者自己进行封装。)
  handleRemove(file, fileList) {
      this.$confirm(`确定移除 ${file.name}?`);
      // 去重,这块得把相同的url对比进行去除。要不然他是没有真正的删除。再次上传还是会出现之前删除的文件
      let fileIndex = this.fileList.findIndex((item) => item.url == file.url);
      this.fileList.splice(fileIndex, 1);
    },
这是vue+element+upload上传图片,手动移除掉的功能。请大家多指教。

在这里插入图片描述

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现Vue Element文件上传,可以使用ElUpload组件。在模板中添加一个el-upload标签,并设置相关属性,如ref、:file-list、:auto-upload、:on-change、:limit、drag、action和accept。其中,ref用于在代码中获取上传组件的实例,:file-list绑定文件列表,:auto-upload设置为false表示手动触发上传,:on-change绑定一个方法来处理文件改变事件,:limit设置最大可选文件数量,drag表示是否启用拖拽上传,action为后台接口的URL,accept用于指定接受上传的文件类型。 在methods中,可以定义一些方法来处理文件的操作。例如,handleRemove用于移除文件,handlePreview用于预览文件,handleExceed用于处理超出文件数量限制的情况,beforeRemove用于确认是否移除文件。另外,可以定义submit方法来处理文件上传操作。在该方法中,可以创建一个FormData对象,将文件列表中的文件添加到FormData中,然后调用上传文件的API发送请求。在文件状态改变时的钩子函数OnChange中,可以更新文件列表。 示例代码如下: <el-upload class="upload-demo" ref="upload" :file-list="fileEditList" :auto-upload="false" :on-change="uploadEditFile" :limit="1" drag action accept=".kmz"> <i class="el-icon-upload"></i> <div class="el-upload__text">将文件拖到此处,或点击上传</div> <div class="el-upload__tip" slot="tip" style="display: table-cell; color: gray">只能上传.kmz文件</div> </el-upload> methods: { handleRemove(file, fileList) { console.log(file, fileList); }, handlePreview(file) { console.log(file); }, handleExceed(files, fileList) { this.$message.warning(`当前限制选择 3 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length fileList.length } 个文件`); }, beforeRemove(file, fileList) { return this.$confirm(`确定移除 ${file.name}?`); }, submit() { var newFile = new FormData(); this.fileList.forEach((item, index) => { newFile.append("file", item.raw); }) uploadFilePort(newFile).then( (res) => { console.log("文件上传res", res); if (res.data.code == 200) { this.$message({ message: "添加成功!!", type: "success" }); } }, (err) => { this.$message.error(err); } ); }, OnChange(file, fileList) { console.log("OnChange-fileList", file, fileList); this.fileList = fileList; }, },

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值