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