Upload 上传

通过点击或者拖拽上传文件

代码演示

只能上传jpg/png文件,且不超过500kb
  • test1.jpeg 按 delete 键可删除
  • test2.jpeg 按 delete 键可删除

默认点击上传

通过 slot 你可以传入自定义的上传按钮类型和文字提示。可通过设置limit和on-exceed来限制上传文件的个数和定义超出限制时的行为。可通过设置before-remove来阻止文件移除操作。

查看代码 < />

<template>
    <w-upload
      class="upload-demo"
      action="https://jsonplaceholder.typicode.com/posts/"
      :on-preview="handlePreview"
      :on-remove="handleRemove"
      :before-remove="beforeRemove"
      multiple
      :limit="3"
      :on-exceed="handleExceed"
      :file-list="fileList">
      <w-button size="small" icon="w-icon-download" type="primary">点击上传</w-button>
      <div slot="tip" class="w-upload__tip">只能上传jpg/png文件,且不超过500kb</div>
    </w-upload>
</template>
<script>
  export default {
    data() {
      return {
          fileList: [{name: 'food.jpeg', url: 'https://xxx.cdn.com/xxx.jpg'}, {name: 'food2.jpeg', url: 'https://xxx.cdn.com/xxx.jpg'}]
      }
    },
    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) {
        return this.$Confirm(`确定移除 ${ file.name }?`);
      }
    }
  }
</script>

    自定义上传图片

    使用 list-type 属性来设置文件列表的样式。自定义preview之后的事件。

    查看代码 < />

    <template>
      <w-upload
          action="https://jsonplaceholder.typicode.com/posts/"
          list-type="picture-card"
          :on-preview="handlePictureCardPreview"
          :on-remove="handleRemove">
          <i class="w-icon-plus"></i>
        </w-upload>
    </template>
    <script>
      export default {
        data() {
          return {
            dialogImageUrl: '',
            dialogVisible: false
          }
        },
        methods: {
           handleRemove(file, fileList) {
            console.log(file, fileList);
          },
          handlePictureCardPreview(file) {
            this.dialogImageUrl = file.url;
            this.dialogVisible = true;
          }
        }
    }
    </script>
    
    将文件拖到此处,或 点击上传
    只能上传jpg/png文件,且不超过500kb

      拖拽上传

      添加drag参数

      查看代码 < />

      <template>
        <w-upload
            class="upload-demo"
            drag
            action="https://jsonplaceholder.typicode.com/posts/"
            multiple>
            <i class="w-icon-download"></i>
            <div class="w-upload__text">将文件拖到此处,或<em>点击上传</em></div>
            <div class="w-upload__tip" slot="tip">只能上传jpg/png文件,且不超过500kb</div>
          </w-upload>
      </template>
      <script>
        export default {
            data() {
              return {
              }
            },
            methods: {
            }
          }
        </script>
      
      只能上传jpg/png文件,且不超过500kb
      • food.jpeg 按 delete 键可删除
      • food2.jpeg 按 delete 键可删除

      手动上传

      查看代码 < />

      <template>
        <w-upload
            class="upload-demo"
            ref="upload"
            action="https://jsonplaceholder.typicode.com/posts/"
            :on-preview="handlePreview"
            :on-remove="handleRemove"
            :file-list="fileList"
            :auto-upload="false">
            <w-button slot="trigger" size="small" type="primary">选取文件</w-button>
            <w-button style="margin-left: 10px;" size="small" type="success" @click="submitUpload">上传到服务器</w-button>
            <div slot="tip" class="w-upload__tip">只能上传jpg/png文件,且不超过500kb</div>
          </w-upload>
      </template>
      <script>
        export default {
          data() {
            return {
                fileList: [{name: 'food.jpeg', url: 'https://xxx.cdn.com/xxx.jpg'}, {name: 'food2.jpeg', url: 'https://xxx.cdn.com/xxx.jpg'}]
            }
          },
          methods: {
            submitUpload() {
              this.$refs.upload.submit();
            },
            handleRemove(file, fileList) {
              console.log(file, fileList);
            },
            handlePreview(file) {
              console.log(file);
            }
          }
        }
      </script>

      Attribute

      参数 说明 类型 可选值 默认值
      action 必选参数,上传的地址 string
      headers 设置上传的请求头部 object
      multiple 是否支持多选文件 boolean
      data 上传时附带的额外参数 object
      name 上传的文件字段名 string file
      with-credentials 支持发送 cookie 凭证信息 boolean false
      show-file-list 是否显示已上传文件列表 boolean true
      drag 是否启用拖拽上传 boolean false
      accept 接受上传的文件类型(thumbnail-mode 模式下此参数无效) string
      on-preview 点击文件列表中已上传的文件时的钩子 function(file)
      on-remove 文件列表移除文件时的钩子 function(file, fileList)
      on-success 文件上传成功时的钩子 function(response, file, fileList)
      on-error 文件上传失败时的钩子 function(err, file, fileList)
      on-progress 文件上传时的钩子 function(event, file, fileList)
      on-change 文件状态改变时的钩子,添加文件、上传成功和上传失败时都会被调用 function(file, fileList)
      before-upload 上传文件之前的钩子,参数为上传的文件,若返回 false 或者返回 Promise 且被 reject,则停止上传。 function(file)
      before-remove 删除文件之前的钩子,参数为上传的文件和文件列表,若返回 false 或者返回 Promise 且被 reject,则停止删除。 function(file, fileList)
      list-type 文件列表的类型 string text/picture/picture-card text
      auto-upload 是否在选取文件后立即进行上传 boolean true
      file-list 上传的文件列表, 例如: [{name: 'food.jpg', url: 'https://xxx.cdn.com/xxx.jpg'}] array []
      http-request 覆盖默认的上传行为,可以自定义上传的实现 function
      disabled 是否禁用 boolean false
      limit 最大允许上传个数 number
      on-exceed 文件超出个数限制时的钩子 function(files, fileList) -

      Slot

      name 说明
      trigger 触发文件选择框的内容
      tip 提示说明文字

      Methods

      方法名 说明 参数
      clearFiles 清空已上传的文件列表(该方法不支持在 before-upload 中调用)
      abort 取消上传请求 ( file: fileList 中的 file 对象 )
      submit 手动上传文件列表

      贡献者

      类型 参与者
      设计者 UED视觉组
      维护者 UED前端组
      上次更新: 3/17/2020, 8:46:00 PM