改七牛直传

This commit is contained in:
2026-04-09 18:07:55 +08:00
parent b903cabefb
commit 153e76f32a
6 changed files with 737 additions and 20 deletions
@@ -115,7 +115,8 @@ import {
createSoftwareUpgrade,
updateSoftwareUpgrade,
} from "@/api/softwareUpgrade";
import { getUserCate, createFileCate, uploadFile, getFileById } from "@/api/file";
import { getUserCate, createFileCate, getFileById } from "@/api/file";
import { smartUpload } from "@/utils/qiniuUpload";
const emit = defineEmits(["saved"]);
@@ -262,8 +263,7 @@ async function handlePackageUpload(options) {
options.onError?.(new Error("no category"));
return;
}
const fd = new FormData();
fd.append("file", file);
uploadXHRActive.value = true;
uploadPercent.value = 0;
uploadIndeterminate.value = false;
@@ -273,20 +273,24 @@ async function handlePackageUpload(options) {
let lastLoaded = 0;
let lastTick = xhrStart;
let emaBps = 0;
const res = await uploadFile(fd, {
// 使用智能上传(自动选择本地或七牛云)
const result = await smartUpload(file, {
cate: cateId,
onUploadProgress: (e) => {
onProgress: (progress) => {
const now = Date.now();
const loaded = e.loaded;
const total = e.total ?? 0;
const loaded = progress.loaded;
const total = progress.total || 0;
const elapsedSec = (now - xhrStart) / 1000;
const dt = (now - lastTick) / 1000;
if (dt >= 0.07 && loaded >= lastLoaded) {
const inst = (loaded - lastLoaded) / dt;
emaBps = emaBps > 0 ? emaBps * 0.72 + inst * 0.28 : inst;
lastLoaded = loaded;
lastTick = now;
}
const avgBps = elapsedSec > 0.12 ? loaded / elapsedSec : 0;
const showBps = emaBps > 0 ? emaBps : avgBps;
uploadSpeedText.value = showBps > 0 ? formatSpeed(showBps) : elapsedSec > 0.05 ? formatSpeed(avgBps) : "—";
@@ -301,19 +305,14 @@ async function handlePackageUpload(options) {
}
},
});
if (res?.code === 200 || res?.code === 201) {
const d = res.data || {};
form.fileId = d.id != null ? Number(d.id) : null;
const src = d.url || "";
form.downloadUrl = absoluteFromSrc(src);
uploadedLabel.value = d.name || file.name || "安装包";
displayFileList.value = [{ name: uploadedLabel.value, uid: `pkg-${form.fileId}-${Date.now()}` }];
ElMessage.success(res.code === 201 ? "文件已存在,已关联" : "上传成功");
options.onSuccess?.(res);
} else {
ElMessage.error(res?.msg || "上传失败");
options.onError?.(new Error(res?.msg));
}
// 上传成功
form.fileId = result.id;
form.downloadUrl = result.url;
uploadedLabel.value = result.name || file.name || "安装包";
displayFileList.value = [{ name: uploadedLabel.value, uid: `pkg-${form.fileId}-${Date.now()}` }];
ElMessage.success("上传成功");
options.onSuccess?.(result);
} catch (e) {
ElMessage.error(e?.message || "上传失败");
options.onError?.(e);