UNPKG

vuux

Version:

Vue3 Nuxt3 Nuxt4 组件库

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