vue+element upload 手动上传

限制文件类型,以及文件大小。

<template>
  <el-upload
    style="padding:20px"
    class="upload-demo"
    ref="upload"
    :before-upload="beforeUpload"
    :action="url"
    :on-preview="handlePreview"
    :on-remove="handleRemove"
    :on-success="handleSuccess"
    :on-error="handleError"
    :file-list="fileList"
    :auto-upload="false"
    :limit="1"
    :data="formdata"
    accept=".ppt, .pptx"
  >
    <el-button slot="trigger" type="primary">选取PPT文件</el-button>
    <el-button style="margin-left: 10px;" type="success" @click="submitUpload">上传到服务器</el-button>
  </el-upload>
</template>
<script>
export default {
  data() {
    return {
      //formdata:{type:0},//是否携带参数
      fileList: [],
      url: "/api/upload/uploadppt"
    };
  },
  methods: {
    handleChange(file, fileList) {
      console.log(file, fileList);
    },
    submitUpload() {
      this.$refs.upload.submit();
    },
    handleRemove(file, fileList) {
      console.log(file, fileList);
    },
    handlePreview(file) {
      console.log(file.name);
    },
    handleSuccess(res, file){
        this.$message.success(file.name + " 上传成功!")
        this.$refs.upload.clearFiles();
    },
    handleError(err, file){
        // console.log(err,file)
        this.$message.error(file.name + " 上传失败!")
    },
    beforeUpload(file) {
      var testmsg = file.name.substring(file.name.lastIndexOf(".") + 1);
      const extension = testmsg === "ppt";
      const extension2 = testmsg === "pptx";
      // const isLt2M = file.size / 1024 / 1024 < 10
      if (!extension && !extension2) {
        this.$message({
          message: "上传文件只能是 ppt、pptx格式!",
          type: "warning"
        });
      }
      // if(!isLt2M) {
      //     this.$message({
      //         message: '上传文件大小不能超过 10MB!',
      //         type: 'warning'
      //     });
      // }
      // return (extension || extension2) && isLt2M
      return extension || extension2;
    }
  }
};
</script>
要实现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">将文件拖到此处,或点击<em>上传</em></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; }, },
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值