您的位置:首页 > 房产 > 建筑 > 无锡网络推广哪家好_网站建设推广语_如何设计推广方案_全网营销系统是不是传销

无锡网络推广哪家好_网站建设推广语_如何设计推广方案_全网营销系统是不是传销

2025/1/4 14:20:29 来源:https://blog.csdn.net/weixin_43581952/article/details/144843513  浏览:    关键词:无锡网络推广哪家好_网站建设推广语_如何设计推广方案_全网营销系统是不是传销
无锡网络推广哪家好_网站建设推广语_如何设计推广方案_全网营销系统是不是传销

txt文件在线预览不需要下载另外的插件,主要有两种形式,一种是上传完成后实现预览;另一种是后端提供文件下载接口,获取文件在线地址实现预览;

一、上传完成后实现预览

<template><!-- txt文件预览 --><div><el-dialogtitle="文件预览":visible="dialogVisible"show-closeappend-to-bodywidth="60%":before-close="cancelDialog"><input type="file" @change="handleFileChange"><div class="panel-box" v-html="txt"></div><div slot="footer" class="dialog-footer tc"><button class="btn-submit btn-submit-sm" @click="cancelDialog()">关闭</button></div></el-dialog></div>
</template><script>
export default {name:'txtFilePreview',data() {return {dialogVisible:false,txt:'',};},methods: {previewFile(){this.dialogVisible = true;},handleFileChange(e){const file = e.target.files[0];if (!file) {return;}const that = this;const reader = new FileReader();reader.onload = function(e) {that.txt = e.target.result.split('\n').join('<br />');};reader.onerror = function(error) {console.error('Error: ', error);};reader.readAsText(file);},cancelDialog(){this.dialogVisible = false;},}
};
</script><style lang="scss" scoped>
</style>

实现效果:

 二、后端提供文件下载接口实现预览

<template><!-- txt文件预览 --><div><el-dialogtitle="文件预览":visible="dialogVisible"show-closeappend-to-bodywidth="60%":before-close="cancelDialog"><div class="panel-box" v-html="txt"></div><div slot="footer" class="dialog-footer tc"><button class="btn-submit btn-submit-sm" @click="cancelDialog()">关闭</button></div></el-dialog></div>
</template><script>
export default {name:'txtFilePreview',data() {return {dialogVisible:false,txt:'',};},methods: {previewFile(event,docId) {event.stopPropagation();this.dialogVisible = true;const inParam = {DOC_ID: docId,STAFF_ID: this.$store.getters.staffId,STAFF_NAME: this.$store.getters.staffName,SYS_USER_CODE: this.$store.getters.systemUserCode};const loading = this.$commonUtil.loading.open()this.$txtPreview(this.mciApi.common.file.downFile, { ...inParam }).then(r => {loading.close()// 根据文件地址解析txt文件内容this.$axios.get(r,{responseType:"blob",transformResponse: [async (data)=>{return await this.transformData(data);},],}).then(res=>{res.data.then((data)=>{this.txt = data ? data.split('\n').join('<br />') : '';})})}).catch((e) => {loading.close()})},transformData(data){return new Promise((resolve)=>{let reader = new FileReader();reader.readAsText(data,'UTF-8');reader.onload = ()=>{resolve(reader.result)}})},cancelDialog(){this.dialogVisible = false;},}
};
</script><style lang="scss" scoped>
</style>

Tips

$txtPreview:是封装后的post请求;

this.mciApi.common.file.downFile:是后端提供的文件下载方法,返回一个文件流数据。获取数据后将文件流进行地址转换作为结果返回。

 文件流转url地址:

const blob = new Blob([content], { type: 'application/text' });
const url = window.URL.createObjectURL(blob);

实现效果:

参考文章:vue3中实现txt格式文件预览(纯前端)_vue3 txt预览-CSDN博客 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com