文件管理

文件管理
寒霜1、el-upload formDat 上传
header根据项目需求有所不同,本项目采用的是Cookie,另外,该封装内没有判断文件类型
import Cookies from "_js-cookie@2.2.1@js-cookie";
import axios from "_axios@0.19.2@axios";
function uploadFile_(file) {
let uploadData = new FormData();
uploadData.append("file", file.file);
let headers = {
"Content-Type": "multipart/form-data",
"Accept-Language": Cookies.get("language") || "zh-CN",
token: Cookies.get("tenant_token") || this.$store.state.user.token,
tenant_code: Cookies.get("tenant_code") || "",
userId: Cookies.get("userId") || null,
deptId: Cookies.get("deptId") || null,
appId: window.SITE_CONFIG["sysId"],
};
let url = `${window.SITE_CONFIG["apiURL"]}/import/vehicle`;
axios
.post(`${url}`, uploadData, { headers: headers })
.then((res) => {
console.log(res, "选择导入");
})
.catch((err) => {
console.log(err, "选择导入");
});
}
2、前端文件下载
2.1 后端返回文件流
let data = { projectId: this.selectValue };
console.log(data);
if (!data.projectId) {
this.$message.error("请先选择项目");
return;
}
http
.post(
"/cockpit/project/platform/export",
{ data: data },
{ responseType: "blob" }
)
.then((res) => {
let upload = { fileName: new Date().getTime(), fileExtension: "xls" };
//创建一个a标签
const link = document.createElement("a");
//实例化一个blob出来
const blob = new Blob([res.data]);
link.style.display = "none";
//将后端返回的数据通过blob转换为一个地址
link.href = URL.createObjectURL(blob);
//设置下载下来后文件的名字以及文件格式
link.setAttribute(
"download",
//upload为下载的文件信息 可以在外层包一个函数 将upload作为参数传递进来
`${upload.fileName}.` + `${upload.fileExtension}`
);
document.body.appendChild(link);
//下载该文件
link.click();
document.body.removeChild(link);
})
.catch((err) => {
console.log(err);
});