1. 不应用action

a: html局部(上传单个文件)

<el-upload  class="avatar-uploader"  action="#"  :limit="1"  :show-file-list="false"  :http-request="handleUpload"  :before-upload="handleChange"  accept=".png,.jpe,.jpeg"  ref="uploadBanner">  <img v-if="formData.appLogo" :src="formData.appLogo" class="avatar" />  <el-icon v-else class="avatar-uploader-icon"><Plus /></el-icon>  <el-icon    v-if="formData.appLogo"    class="logoDelete"    @click.stop="clearUploadImg"    ><CircleCloseFilled  /></el-icon></el-upload>

b: js局部

// 上传const handleChange = (rawFile) => {  if (rawFile.type !== "image/jpeg" && rawFile.type !== "image/png") {    ElMessage.error("只能上传jpeg/jpg/png图片");    return false;  } else if (rawFile.size / 1024 / 1024 > 1) {    ElMessage.error("上传图片最大不超过1MB!");    return false;  }  return true;};const handleUpload = async (file) => {  let fd = new FormData();  fd.append("file", file.file);    // 这里是申请上传接口    let result = await uploadFile(fd);    if (result.code == 200) {      // 后盾只返回文件名称,须要拼接      formData.value.appLogo =        import.meta.env.VITE_APP_HOSTURL +        import.meta.env.VITE_APP_BASEURL +        "file/previewFile/" +        result.data;      // 去掉form表单验证的*      // formRef.value.clearValidate(['appLogo'])      // 上传胜利清空文件      uploadBanner.value.handleRemove(file);    } else {      formData.value.appLogo = "";      ElMessage.error(result.message);      uploadBanner.value.handleRemove(file);    }};const clearUploadImg = (file) => {  formData.value.appLogo = "";  uploadBanner.value.clearFiles();};

2. 应用action上传

a. html局部(上传多个文件)

<el-upload action="uploadUrl" list-type="picture-card" v-model:file-list="formData.fileList" :limit="9" accept="image/*" :before-upload="beforeUpload" :on-success="handleSuccess">  <el-icon>    <Plus />  </el-icon>  <template #file="{ file }">    <div>      <img class="el-upload-list__item-thumbnail" :src="file.url" alt="" />      <span class="el-upload-list__item-actions">        <span class="el-upload-list__item-delete" @click="handleRemove(file)">          <el-icon>            <Delete />          </el-icon>        </span>      </span>    </div>  </template></el-upload>

b. js局部

const uploadUrl = import.meta.env.VITE_APP_HOSTURL + "/imgUpload/upload";const handleRemove = (file) => {  for (let i = 0; i < formData.fileList.length; i++) {    let item = formData.fileList[i]    if (item.uid === file.uid) {      formData.fileList.splice(i, 1)      return true    }  }  console.log(file)}const beforeUpload = (file) => {  const isLtSize = file.size / 1024 / 1024 < 5;  if (!isLtSize) {    ElMessage.error("上传图片大小不能超过 5MB!");    return false;  }  return true;}const handleSuccess = (file) => { console.log(file) }