vue3+ts+elementui中的手动上传至服务器

<el-upload class="inline" ref="uploadImgRef" :http-request="uploadImg" :auto-upload="false" :accept="'.jpg,.png'">
   <template #trigger>
     <el-button type="primary" plain>
            选择图片
     </el-button>
   </template>
</el-upload>
<el-button type="primary" @click="enableClick(formRef)">启用</el-button>

http-request : 覆盖默认的 Xhr 行为,允许自行实现上传文件的请求

type中写法:

复制代码
export interface IPromisdata<T> {
  code?: number;
  msg?: string
  data: T
}
// 标准图片上传
export interface IAddPictureRes {
   imgId: string
}
export type ResponsePostureData<T> = Promise<IPromisdata<T>>
复制代码

api写法:

复制代码
//引用type
export const addPicture = (data: { file: File }): ResponsePostureData<IAddPictureRes> => { const fd = new FormData() fd.append('file', data.file) return request({ url: '/img/v1/add', method: 'POST', data: fd }) }
复制代码

script写法:

复制代码
import type { UploadInstance } from 'element-plus'
const uploadImgRef = ref<UploadInstance>()
// 上传图片请求
const uploadImg = async ({ file }: { file: File }) => {
  const res = await addPicture({ file })
  if (res.code === 200) {
    ElMessage.success('图片上传成功')
  } else {
    ElMessage.error(res.msg)
  }
}
// 启用
const enableClick = (formEl: FormInstance | undefined) => {
  if (!formEl) return
  formEl.validate((valid) => {
    if (valid) {// 图片上传 上传到服务器
      uploadImgRef.value!.submit()
    } else {
      return false
    }
  })
}
复制代码

外部方法 : submit  手动上传文件列表

作者:CoderWGB
欢迎任何形式的转载,但请务必注明出处。
限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教。

posted @   Y不正  阅读(300)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示