element中图片和文件的预览功能
element
A Vue.js 2.0 UI Toolkit for Web
项目地址:https://gitcode.com/gh_mirrors/eleme/element
免费下载资源
·
按照需求在做一个图片和文件预览的功能。
因为后台返回的是二进制文件,所以根本不能直接打开。
第一步,针对图片的预览,我使用了el-image-viewer 组件。
1.后台请求的方法
download: params => {
return axios.get('/contentmanagement/file/download?id='+params.id,{
responseType: 'arraybuffer'
});
},
//responseType: 'arraybuffer'一定要加上,具体原因去百度
这个是前端的样式
2.预览按钮
<el-button type="warning" size="medium" icon="el-icon-view" circle title="预览" @click.stop="handlePreview(scope.$index, scope.row)"></el-button>
3.因为图片预览使用了image-viewer,所以一定要导入组件
// 导入组件
import ElImageViewer from 'element-ui/packages/image/src/image-viewer'
//注册组件
components: { ElImageViewer },
4.具体代码了
<template>
<div >
<el-image-viewer
v-if="showViewer"
:on-close="closeViewer"
:url-list="[imgUrl]" />
</div>
</template>
//这个是图片标签
//定义需要使用的属性
imgUrl:'',//图片
showViewer: false, // 显示查看器
//定义需要的事件
// 关闭查看器
closeViewer() {
this.showViewer = false
},
//定义预览按钮中绑定的事件handlePreview
handlePreview: function(index,row){
//截取文件后缀名
var index = row.cnsName.lastIndexOf(".");
var suffix = row.cnsName.substr(index+1);
// console.log(suffix);
if(this.compareImg(suffix)){//判断类型为图片
let para = {
id: row.cnsId,
};
this.listLoading = true;
this.$api.cententscenter.download(para).then((res) => {
// console.log(res,res.data);
return 'data:image/png;base64,' + btoa(
new Uint8Array(res.data).reduce((data, byte) => data + String.fromCharCode(byte), '')
)
}).then(data => {
this.imgUrl = data;
})
this.showViewer = true;
this.listLoading = false;
return;
}
},
//判断类型为图片的方法
compareImg(type){//比较图片类型
let typsList = ['bmp','jpg','png','gif','svg','webp'];
if(typsList.indexOf(type)> -1){//说明类型是图片
return true;
}else{
return false;
}
},
图片的预览功能完成
第二步,搞的是word文档等等的预览,使用的是微软提供的Office Online
//其实很简单了,在handlePreview方法中加个判断
else if(this.compareFile(suffix)){//判断是word文档等等
window.open(//显示word 1576205803810
"https://view.officeapps.live.com/op/view.aspx?src=xxxx",
"_blank"
);
return false;
}
//src后面加的就是你的文件路径,但是需要注意,必须是外网可以访问的路径,我的是
GitHub 加速计划 / eleme / element
54.06 K
14.63 K
下载
A Vue.js 2.0 UI Toolkit for Web
最近提交(Master分支:3 个月前 )
c345bb45
7 个月前
a07f3a59
* Update transition.md
* Update table.md
* Update transition.md
* Update table.md
* Update transition.md
* Update table.md
* Update table.md
* Update transition.md
* Update popover.md 7 个月前
更多推荐
已为社区贡献1条内容
所有评论(0)