UNPKG

vuux

Version:

Vue3 Nuxt3 Nuxt4 组件库

2 lines (1 loc) 1.07 kB
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("../../../Message/index.cjs"),y=({uid:t,uploadUrl:n,selectedFile:l,headers:c={},data:p={},name:f="file",onSuccess:u,onError:r,onProgress:g})=>{if(!n)return r(t,"无效上传地址"),{cancel:()=>{}};const s=new XMLHttpRequest,a=new FormData;a.append(f,l);for(const e of Object.keys(p))a.append(e,p[e]);s.open("POST",n,!0);for(const e of Object.keys(c))s.setRequestHeader(e,c[e]);return s.upload.onprogress=e=>{if(e.lengthComputable){const T=e.loaded/e.total*100;g(t,T)}},s.onload=()=>{if(s.status>=200&&s.status<300)try{const e=JSON.parse(s.responseText);e.error||e.err?(r(t,e),o.Message.error("上传失败:服务器返回错误!")):u(t,e)}catch{r(t,s.responseText),o.Message.error("上传失败:解析响应错误!")}else r(t,s.responseText),o.Message.error(`上传失败:HTTP${s.status}!`)},s.onerror=()=>{r(t,s.responseText),o.Message.error("上传失败:请求错误!")},s.send(a),{cancel(){s.abort(),o.Message.success("上传已取消")}}};exports.UploadRequest=y;