【改进】固件上传

This commit is contained in:
2025-11-12 09:26:16 +08:00
parent 746e5051cf
commit 57f97a490a
4 changed files with 77 additions and 11 deletions

View File

@@ -219,6 +219,7 @@
id="firmwareFile"
name="file"
accept=".bin"
ref="firmwareFileRef"
>
<div class="form-text text-muted mt-1">支持 .bin 格式,单个文件不超过 100MB</div>
</div>
@@ -499,20 +500,59 @@
},
// 打开文件上传模态框
openUploadModal(item) {
this.addOrEditDto = item;
this.modalInstances['uploadFileModal'].show();
},
uploadFile() {
request.put("/biz/user/resetPasswordRequest", this.resetPasswordDto)
.then((res) => {
if (res.code === 200) {
$message.success('修改成功!', 500);
this.modalInstances['resetPwdModal'].hide();
} else {
alert('修改失败!');
async uploadFile() {
// 1. 获取选中的文件
const fileInput = this.$refs.firmwareFileRef;
const file = fileInput.files[0];
// 2. 校验文件(格式、大小)
if (!file) {
alert("请选择 .bin 格式的固件文件");
return;
}
if (file.type !== "application/octet-stream" && !file.name.endsWith(".bin")) {
alert("仅支持 .bin 格式文件");
return;
}
if (file.size > 100 * 1024 * 1024) { // 100MB
alert("文件大小不能超过 100MB");
return;
}
const formData = new FormData();
formData.append("file", file);
formData.append("id", this.addOrEditDto.id);
// 4. 发送上传请求Axios
try {
const response = await axios({
url: "/biz/firmware/uploadFile",
method: "POST",
data: formData,
headers: {
"Content-Type": "multipart/form-data"
},
onUploadProgress: (progressEvent) => {
const progress = (progressEvent.loaded / progressEvent.total) * 100;
console.log(`上传进度:${progress.toFixed(2)}%`);
}
this.resetPasswordDto = {};
});
if (response.data.success) {
$message.success('固件上传成功');
this.$refs.firmwareFileRef.value = "";
this.modalInstances['uploadFileModal'].hide();
} else {
$message.error("上传失败:" + response.data.message);
}
} catch (error) {
console.error("上传出错:", error);
$message.error("网络异常,上传失败");
}
},
// 打开新增模态框
openAddModal() {