vue+element ui 实现文件上传下载
•
前端
1.上传html代码:
选取文件
支持上传".jpg,.gif,.png,.jpeg,.txt,.pdf,.doc,.docx,.xls,.xlsx" 文件,最多上传10个
2.api中需要携带的数据
//文件上传api
export const upload = (data, date, userNumber) => axios.post(`/file/upload?date=${date}&userNumber=${userNumber}`, data, { headers: { 'Content-Type': 'multipart/form-data', token: window.localStorage.getItem('token') } });
//文件下载api
export const download = (data) => axios.post("/file/download", data, { responseType: "blob" },);
3.上传js代码
export default {
data() {
return {
upload: {
fileList: [],
fileName: []
},
myToken: {
Authorization: localStorage.getItem("token"),
},
date: "",
userNumber: "",
}
},
methods: {
// 将文件上传坐在form表单中时,出发添加校验成功后进行文件上传
add(formName) {
this.$refs[formName].validate(async (valid) => {
if (valid) {
//需要的js代码
// 创建新的数据对象
let formData = new FormData();
// 将上传的文件放到数据对象中
this.upload.fileList.forEach(file => {
formData.append('file', file.raw);
});
var date1 = new Date()
this.data = date1.getFullYear() + "-" + (date1.getMonth() + 1) + "-" + date1.getDate()
this.userNumber = JSON.parse(decodeURIComponent(window.atob(localStorage.getItem("userNumber"))));
let res = await SuperviseSave(params)//上传表单内容
if (res.status == 200) {
try {
// 添加成功
let res = await upload(formData, this.data, this.userNumber)//上传文件
if (res.data == "上传成功") {
this.close("addSuccess")
this.success("数据添加成功")
}
} catch (err) {
if (err.data = "upload failed:新建 DOCX 文档.docx文件不能为空") {
this.success(err.data)
}
}
}
}
} else {
return false;
}
});
},
// 上传发生变化钩子
handleFileChange(file, fileList) {
this.upload.fileList = fileList;
const newListLength = new Set(fileList.map(item => item.name)).size;
const listLength = fileList.length;
if (listLength > newListLength) {
this.success("文件名存在重复,可能会导致文件覆盖,请进行修改")
}
},
// 删除之前钩子
handleFileRemove(file, fileList) {
this.upload.fileList = fileList;
},
},
}
下载html代码
返回
{{ item.title }}:
{{ msg[item.prop] }}
附件:
{{ item.fileName }}点击下载
下载js代码
data() {
return {
uploadPicture: [],
filePath: ""
}
},
methods: {
//请求文件下载接口
async downLoad(fileName, filePath) {
//请求下载接口
let res =await download({
filePath, //文件存储路径
fileName, //文件名
})
//配置一下代码进行下载
let url = window.URL.createObjectURL(new Blob([res.data]));
let link = document.createElement("a");
link.style.display = "none";
link.href = url;
link.setAttribute("download", fileName); //fileName下载后的文件名
document.body.appendChild(link);
link.click();
// 释放内存
window.URL.revokeObjectURL(link.href)
}
},
// 文件上传
export const upload = (data, date, userNumber) => axios.post(`/file/upload?date=${date}&userNumber=${userNumber}`, data, { headers: { 'Content-Type': 'multipart/form-data', token: window.localStorage.getItem('token') } });
// 文件上传
export const checkFiles = (data, date, userNumber) => axios.post(`/file/checkFiles?date=${date}&userNumber=${userNumber}`, data, { headers: { 'Content-Type': 'multipart/form-data', token: window.localStorage.getItem('token') } });
//文件下载
export const download = (data) => axios.post("/file/download", data, { responseType: "blob" },);
本文来自网络,不代表协通编程立场,如若转载,请注明出处:https://net2asp.com/fa0ec92d27.html
