在工作中,有个需求:
目前有个缺点,PDF文件如果大于2M,就预览不成功了。
点击上传
更具体的el-upload方法可以参考官网介绍
查看
删除
httpRequest(data) {
// 调用转方法base64
this.getBase64(data.file)
.then((resBase64) => {
console.log(resBase64)
//获取文件,不带data:application/pdf;base64, 前缀
this.file = resBase64.split(",")[1];
//获取文件名称
this.fileName = data.file.name;
this.files.push({
fileId: 1,
fileName: this.fileName,
file:this.file
});
//调用上传接口,这里暂时不调用
// this.upload();
})
.catch((err) => {
console.log(err);
});
},
getBase64(file) {
return new Promise((resolve, reject) => {
const reader = new FileReader();
let fileResult = "";
reader.readAsDataURL(file);
// 开始转码
reader.onload = () => {
fileResult = reader.result;
};
// 转码失败
reader.onerror = (error) => {
reject(error);
};
// 转码结束
reader.onloadend = () => {
resolve(fileResult);
};
});
},
这里只是模拟,后面需要调用后端接口获取数据
//预览
lookFile(fileId) {
let that = this;
that.file = fileId.file;
that.dialogVisible = true;
},
upload() {
let that = this;
let { file, fileName } = that;
//这里调用后端接口,根据自己项目修改,传递参数为base64文件,及文件名称
this.$api
.upload({ file, fileName })
.then((res) => {
if (res.data.code == 200) {
let result = res.data.data;
//这里是接口返回fileId,fileName,然后添加到文件列表数组里
that.files.push({
fileId: result.fileId,
fileName: result.fileName,
});
that.$message.success("文件上传成功");
}
})
.catch((err) => {
console.log(err);
});
},
具体实现代码如下:
点击上传
查看
删除