1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
| <template> <div class='file'> <el-upload v-model:file-list="fileList" drag ref="uploadRef" :accept = 'acceptFile' :multiple="true" :action="uploadUrl" :auto-upload="false" :limit="5" :on-success="uploadSuccess" :on-error="uploadError" :on-remove="handleRemove" :on-exceed="handleExceed" :before-upload="checkUpload" > <el-icon class="el-icon--upload"><upload-filled /></el-icon> <div class="el-upload__text"> Drop file here or <em>click to upload</em> </div> <template #tip> <div class="el-upload__tip"> 请上传.json文件 </div> </template>
</el-upload> <el-button class="ml-3" type="success" @click="submitUpload"> upload to server </el-button> </div> </template>
<script setup> import {ElButton, ElUpload, ElIcon, ElMessage} from 'element-plus' import { ref } from 'vue' import { fileUploadUrl } from "@/api"; const uploadRef = ref()
const uploadUrl = ref("http://127.0.0.1:6666/upload") const fileList = ref([])
const acceptFile = ref('.json')
const uploadSuccess = (response, uploadFile) => { console.log("res") console.log(response) console.log("file:") console.log(uploadFile) console.log(fileList.value) }
const uploadError = (response,uploadFile) => { console.log("res") console.log(response) console.log("file:") console.log(uploadFile)
} const handleRemove = (file, uploadFiles)=> { console.log(file, uploadFiles) } const handleExceed = (files, uploadFiles) => { ElMessage.warning( `The limit is 5, you selected ${files.length} files this time, add up to ${ files.length + uploadFiles.length } totally` ) }
const checkUpload = (file) => { console.log(file) const types = [ 'application/json', ] if(types.indexOf(file.type) === -1) { ElMessage.warning( '请上传格式正确的文件' ) } }
const submitUpload = () => { uploadRef.value.submit() }
</script>
<style scoped lang='less'> .form { margin: 50px 0 0 0; } .file { margin-top: 30px; } </style>
|