zoukankan      html  css  js  c++  java
  • el-upload 上传文件和上传图片的基本用法

    el-upload 上传excel

    <template>
      <el-form :model="form">
        <el-form-item label="上传文件" :label-width="formLabelWidth">
          <el-upload
            ref="uploadExcel"
            action="https://jsonplaceholder.typicode.com/posts/"
            :limit=limitNum
            :auto-upload="false"
            accept=".xlsx"
            :before-upload="beforeUploadFile"
            :on-change="fileChange"
            :on-exceed="exceedFile"
            :on-success="handleSuccess"
            :on-error="handleError"
            :file-list="fileList">
            <el-button size="small" plain>选择文件</el-button>
            <div slot="tip" class="el-upload__tip">只能上传xlsx(Excel2007)文件,且不超过10M</div>
          </el-upload>
        </el-form-item>
        <el-form-item>
          <el-button size="small" type="primary" @click="uploadFile">立即上传</el-button>
          <el-button size="small">取消</el-button>
        </el-form-item>
      </el-form>
    </template>
    
    <script>
    import axios from 'axios'
    export default {
      data() {
        return {
          limitNum: 1,
          formLabelWidth: '80px',
          form: {
            file: ''
          },
          fileList: []
        }
      },
      methods: {
        // 文件超出个数限制时的钩子
        exceedFile(files, fileList) {
          this.$notify.warning({
            title: '警告',
            message: `只能选择 ${this.limitNum} 个文件,当前共选择了 ${files.length + fileList.length} 个`
          });
        },
        // 文件状态改变时的钩子
        fileChange(file, fileList) {
          console.log('change')
          console.log(file)
          this.form.file = file.raw
          console.log(this.form.file)
          console.log(fileList)
        },
        // 上传文件之前的钩子, 参数为上传的文件,若返回 false 或者返回 Promise 且被 reject,则停止上传
        beforeUploadFile(file) {
          console.log('before upload')
          console.log(file)
          let extension = file.name.substring(file.name.lastIndexOf('.')+1)
          let size = file.size / 1024 / 1024
          if(extension !== 'xlsx') {
            this.$notify.warning({
              title: '警告',
              message: `只能上传Excel2017(即后缀是.xlsx)的文件`
            });
          }
          if(size > 10) {
            this.$notify.warning({
              title: '警告',
              message: `文件大小不得超过10M`
            });
          }
        },
        // 文件上传成功时的钩子
        handleSuccess(res, file, fileList) {
          this.$notify.success({
            title: '成功',
            message: `文件上传成功`
          });
        },
        // 文件上传失败时的钩子
        handleError(err, file, fileList) {
          this.$notify.error({
            title: '错误',
            message: `文件上传失败`
          });
        },
        uploadFile() {
          this.$refs.uploadExcel.submit()
          /*
          let formData = new FormData()
          formData.append('file', this.form.file)
          axios.post('https://jsonplaceholder.typicode.com/posts/', 
            formData,
            { "Content-Type": "multipart/form-data" }
          )
          .then(res => {
            console.log('res')
            console.log(res)
          })
          .catch(err => {
    
          })
          */
        }
      }
    }
    </script>
    
    <style lang="scss" scoped>
    
    </style>

    el-upload 上传图片

    <template>
      <el-form :model="form">
        <el-form-item label="上传图片" :label-width="formLabelWidth">
          <el-upload
            ref="upload"
            action="#"
            accept="image/png,image/gif,image/jpg,image/jpeg"
            list-type="picture-card"
            :limit=limitNum
            :auto-upload="false"
            :on-exceed="handleExceed"
            :before-upload="handleBeforeUpload"
            :on-preview="handlePictureCardPreview"
            :on-remove="handleRemove">
            <i class="el-icon-plus"></i>
          </el-upload>
          <el-dialog :visible.sync="dialogVisible">
            <img width="100%" :src="dialogImageUrl" alt="">
          </el-dialog>
        </el-form-item>
        <el-form-item>
          <el-button size="small" type="primary" @click="uploadFile">立即上传</el-button>
          <el-button size="small">取消</el-button>
        </el-form-item>
      </el-form>
    </template>
    
    <script>
    export default {
      data() {
        return{
          dialogImageUrl: '',
          dialogVisible: false,
          formLabelWidth: '80px',
          limitNum: 3,
          form: {}
        }
      },
      methods: {
        // 上传文件之前的钩子
        handleBeforeUpload(file){
          console.log('before')
          if(!(file.type === 'image/png' || file.type === 'image/gif' || file.type === 'image/jpg' || file.type === 'image/jpeg')) {
            this.$notify.warning({
              title: '警告',
              message: '请上传格式为image/png, image/gif, image/jpg, image/jpeg的图片'
            })
          }
          let size = file.size / 1024 / 1024 / 2
          if(size > 2) {
            this.$notify.warning({
              title: '警告',
              message: '图片大小必须小于2M'
            })
          }
        },
        // 文件超出个数限制时的钩子
        handleExceed(files, fileList) {
    
        },
        // 文件列表移除文件时的钩子
        handleRemove(file, fileList) {
          console.log(file, fileList);
        },
        // 点击文件列表中已上传的文件时的钩子
        handlePictureCardPreview(file) {
          this.dialogImageUrl = file.url;
          this.dialogVisible = true;
        },
        uploadFile() {
          this.$refs.upload.submit()
        }
      } 
    }
    </script>
    
    <style lang="scss" scoped>
    
    </style>

  • 相关阅读:
    ASP.NET MVC 异常捕获
    Jquery 扩展方法
    Spring.NET笔记1
    ASP.NET MVC Ninject 实现依赖注入
    ASP.NET MVC Unity实现依赖注入
    windows service
    反射用法
    抽象工厂核心反射
    (C#)中的DataSet、string、DataTable等对象转换成Json
    .NET批量删除代码前的行号
  • 原文地址:https://www.cnblogs.com/rogerwu/p/9274193.html
Copyright © 2011-2022 走看看