element/examples/docs/en-US/upload.md
2017-02-16 22:43:19 +08:00

8.0 KiB

Upload

Upload files by clicking or drag-and-drop

Click to upload files

:::demo Customize upload button type and text using slot.

<el-upload
  class="upload-demo"
  action="http://localhost:9000/upload"
  :on-preview="handlePreview"
  :on-remove="handleRemove"
  :file-list="fileList">
  <el-button size="small" type="primary">Click to upload</el-button>
  <div slot="tip" class="el-upload__tip">jpg/png files with a size less than 500kb</div>
</el-upload>
<script>
  export default {
    data() {
      return {
        fileList: [{name: 'food.jpeg', url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100'}, {name: 'food2.jpeg', url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100'}]
      };
    },
    methods: {
      handleRemove(file, fileList) {
        console.log(file, fileList);
      },
      handlePreview(file) {
        console.log(file);
      }
    }
  }
</script>

:::

User avatar upload

Use beforeUpload hook to limit the upload file format and size.

::: demo

<el-upload
  class="avatar-uploader"
  action="http://localhost:9000/upload"
  :show-file-list="false"
  :on-success="handleAvatarScucess"
  :before-upload="beforeAvatarUpload">
  <img v-if="imageUrl" :src="imageUrl" class="avatar">
  <i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
<script>
  export default {
    data() {
      return {
        imageUrl: ''
      };
    },
    methods: {
      handleAvatarScucess(res, file) {
        this.imageUrl = URL.createObjectURL(file.raw);
      },
      beforeAvatarUpload(file) {
        const isJPG = file.type === 'image/jpeg';
        const isLt2M = file.size / 1024 / 1024 < 2;

        if (!isJPG) {
          this.$message.error('Avatar picture must be JPG format!');
        }
        if (!isLt2M) {
          this.$message.error('Avatar picture size can not exceed 2MB!');
        }
        return isJPG && isLt2M;
      }
    }
  }
</script>

:::

Photo Wall

Use listType to change the fileList style.

::: demo

<el-upload
  action="http://localhost:9000/upload"
  list-type="picture-card"
  :on-preview="handlePreview"
  :on-remove="handleRemove">
  <i class="el-icon-plus"></i>
</el-upload>
<script>
  export default {
    methods: {
      handleRemove(file, fileList) {
        console.log(file, fileList);
      },
      handlePreview(file) {
        console.log(file);
      }
    }
  }
</script>

:::

FileList with thumbnail

::: demo

<el-upload
  class="upload-demo"
  action="http://localhost:9000/upload"
  :on-preview="handlePreview"
  :on-remove="handleRemove"
  :file-list="fileList"
  list-type="picture">
  <el-button size="small" type="primary">Click to upload</el-button>
  <div slot="tip" class="el-upload__tip">jpg/png files with a size less than 500kb</div>
</el-upload>
<script>
  export default {
    data() {
      return {
        fileList: [{name: 'food.jpeg', url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100'}, {name: 'food2.jpeg', url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100'}]
      };
    },
    methods: {
      handleRemove(file, fileList) {
        console.log(file, fileList);
      },
      handlePreview(file) {
        console.log(file);
      }
    }
  }
</script>

:::

Drag to upload

You can drag your file to a certain area to upload it.

::: demo

<el-upload
  class="upload-demo"
  drag
  action="http://localhost:9000/upload"
  :on-preview="handlePreview"
  :on-remove="handleRemove"
  :file-list="fileList"
  mutiple>
  <i class="el-icon-upload"></i>
  <div class="el-upload__text">Drop file here or <em>click to upload</em></div>
  <div class="el-upload__tip" slot="tip">jpg/png files with a size less than 500kb</div>
</el-upload>

:::

Manual upload

::: demo

<el-upload
  class="upload-demo"
  ref="upload"
  action="http://localhost:9000/upload"
  :auto-upload="false">
  <el-button slot="trigger" size="small" type="primary">select file</el-button>
  <el-button style="margin-left: 10px;" size="small" type="success" @click="submitUpload">upload to server</el-button>
  <div class="el-upload__tip" slot="tip">jpg/png files with a size less than 500kb</div>
</el-upload>
<script>
  export default {
    methods: {
      submitUpload() {
        this.$refs.upload.submit();
      }
    }
  }
</script>

:::

Attributes

Attribute Description Type Accepted Values Default
action required, request URL string
headers request headers object
multiple whether uploading multiple files is permitted boolean
data additions options of request object
name key name for uploaded file string file
with-credentials whether cookies are sent boolean false
show-upload-list whether to show the uploaded file list boolean true
type type of Upload string select/drag select
accept accepted file types, will not work when thumbnail-mode is true string
on-preview hook function when clicking the uploaded files function(file)
on-remove hook function when files are removed function(file, fileList)
on-success hook function when uploaded successfully function(response, file, fileList)
on-error hook function when some errors occurs function(err, file, fileList)
on-progress hook function when some progress occurs function(event, file, fileList)
on-change hook function when file status change function(file, fileList)
before-upload hook function before uploading with the file to be uploaded as its parameter. If false or a Promise is returned, uploading will be aborted function(file)
thumbnail-mode whether thumbnail is displayed boolean false
file-list default uploaded files, i.e: [{name: 'food.jpeg', url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100'}] array []
list-type type of fileList string text/picture/picture-card text
auto-upload whether to auto upload file boolean true

Events

Event Name Description Parameters
clearFiles clear the uploaded file list