vue3使用ElementPlus upload上传文件的两种方式

1. 不使用action

vue3使用ElementPlus upload上传文件的两种方式_第1张图片

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


  
  
  

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部分(上传多个文件)


  
    
  
  

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) }

你可能感兴趣的:(vue3使用ElementPlus upload上传文件的两种方式)