limit-cover.vue 1.0 KB

123456789101112131415161718192021222324252627282930
  1. <template>
  2. <el-upload ref="upload" class="upload-demo" action="https://run.mocky.io/v3/9d059bf9-4660-45f2-925d-ce80ad6c4d15" :limit="1" :on-exceed="handleExceed" :auto-upload="false">
  3. <template #trigger>
  4. <el-button type="primary">select file</el-button>
  5. </template>
  6. <el-button class="ml-3" type="success" @click="submitUpload"> upload to server </el-button>
  7. <template #tip>
  8. <div class="el-upload__tip text-red">limit 1 file, new file will cover the old file</div>
  9. </template>
  10. </el-upload>
  11. </template>
  12. <script setup lang="ts">
  13. import { ref } from 'vue'
  14. import { genFileId } from 'element-plus'
  15. import type { UploadInstance, UploadProps, UploadRawFile } from 'element-plus'
  16. const upload = ref<UploadInstance>()
  17. const handleExceed: UploadProps['onExceed'] = files => {
  18. upload.value!.clearFiles()
  19. const file = files[0] as UploadRawFile
  20. file.uid = genFileId()
  21. upload.value!.handleStart(file)
  22. }
  23. const submitUpload = () => {
  24. upload.value!.submit()
  25. }
  26. </script>