// 上传图片、上传文件校验大小和格式
const beforeRead = (file) => {
const correctFormat = ["jpg", "jpeg", "png", "bmp"];
const isArray = Object.prototype.toString.call(file) === "[object Array]";
const isLimit50M = 1024 * 1024 * 6; // 是否大于50M
if (isArray) {
const sizes = file.map((item) => item.size);
if (sizes.some((item) => item > isLimit50M)) {
showNotify({ type: "warning", message: "大小不能超过6M" });
return false;
}
const types = file.map(
({ name }) => name.slice(name.lastIndexOf(".") + 1) // 后缀
);
if (!types.every((item) => correctFormat.includes(item))) {
showNotify({ type: "warning", message: "请上传jpg/jpeg/png/bmp" });
return false;
}
} else {
if (file.size > isLimit50M) {
showNotify({ type: "warning", message: "大小不能超过6M" });
return false;
}
const type = file.name.slice(file.name.lastIndexOf(".") + 1);
if (!correctFormat.includes(type)) {
showNotify({ type: "warning", message: "请上传jpg/jpeg/png/bmp" });
return false;
}
}
return true;
};
// 文件上传
const fileUpload = (data, key, id, file) => {
fileUploadApi(data)
.then((res) => {
if (res.status === 1) {
res.data.key = new Date().getTime();
res.data.url = res.data.attachPreviewUrl;
res.data.percent = 100;
res.data.status = "success";
res.data.name = res.data.attachSrcName;
res.data.uid = id;
registerForm[key] = [];
registerForm[key].push(res.data);
file.status = "success";
showNotify({ type: "success", message: "上传成功" });
return true;
} else {
file.status = "failed";
showNotify({ type: "danger", message: "上传失败,请重新上传" });
return false;
}
})
.catch((err) => {
showNotify({ type: "danger", message: err.message });
return false;
});
};
/**文件上傳动作 */
const myBeforeRead = (file, field) => {
if (beforeRead(file)) {
file.status = "uploading";
file.message = "上传中...";
uploadData.file = file;
uploadData.field = field;
const form = new FormData();
const keys = Object.keys(uploadData);
keys.forEach((key) => {
form.append(key, uploadData[key]);
});
// 后台接口
if (fileUpload(form, uploadData.field, file.lastModified, file)) {
return true;
} else {
return false;
}
} else {
return false;
}
};
/**文件删除动作 */
const delImg = (file, field) => {
registerForm[field] = [];
proxy.$refs.registerFormRef.validate(field);
};