Vue2实现txt文件在线预览的代码示例

 更新时间:2025年01月02日 11:47:51   作者:_Feliz  
txt文件在线预览不需要下载另外的插件,主要有两种形式,一种是上传完成后实现预览;另一种是后端提供文件下载接口,获取文件在线地址实现预览;本文给大家介绍了Vue2实现txt文件在线预览的代码示例,需要的朋友可以参考下

一、上传完成后实现预览

<template>
  <!-- txt文件预览 -->
  <div>
    <el-dialog
      title="文件预览"
      :visible="dialogVisible"
      show-close
      append-to-body
      width="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-dialog
      title="文件预览"
      :visible="dialogVisible"
      show-close
      append-to-body
      width="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);

实现效果:

到此这篇关于Vue2实现txt文件在线预览的代码示例的文章就介绍到这了,更多相关Vue2 txt文件在线预览内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Vue在 Nuxt.js 中重定向 404 页面的方法

    Vue在 Nuxt.js 中重定向 404 页面的方法

    这篇文章主要介绍了Vue在 Nuxt.js 中重定向 404 页面的方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-04-04
  • 详解vue express启动数据服务

    详解vue express启动数据服务

    本篇文章主要介绍了vue express启动数据服务,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • vue3调度器scheduler功能和用法详解

    vue3调度器scheduler功能和用法详解

    调度器是vue3响应式系统中一个非常重要的特性,可调度性指的是当trigger 动作触发副作用函数重新执行时,有能力决定副作用函数执行的时机、次数以及方式,本文通过代码示例给大家介绍调度器是什么,有什么功能,怎么使用,感兴趣的同学可以借鉴阅读
    2023-06-06
  • Vue 自适应高度表格的实现方法

    Vue 自适应高度表格的实现方法

    这篇文章主要介绍了Vue 自适应高度表格的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • 一文带你上手vue3中的pinia

    一文带你上手vue3中的pinia

    这篇文章主要以vue3+vite+ts举例,为大家详细介绍了vue3中pinia的安装与使用,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-09-09
  • Vue数据驱动试图的实现方法及原理

    Vue数据驱动试图的实现方法及原理

    当Vue实例中的数据(data)发生变化时,与之相关联的视图(template)会自动更新,反映出最新的数据状态, Vue的数据驱动视图是通过其响应式系统实现的,以下是Vue数据驱动视图实现的核心原理,需要的朋友可以参考下
    2024-10-10
  • Vue.js实现微信过渡动画左右切换效果

    Vue.js实现微信过渡动画左右切换效果

    这篇文章主要给大家介绍了利用Vue.js仿微信过渡动画左右切换效果的相关资料,需要用到的技术栈是Vue+Vuex。文中通过示例代码介绍的非常详细,对大家具一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-06-06
  • 解析Vue2 dist 目录下各个文件的区别

    解析Vue2 dist 目录下各个文件的区别

    本篇文章主要介绍了解析Vue2 dist 目录下各个文件的区别,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • cesium开发之如何在vue项目中使用cesium,使用离线地图资源

    cesium开发之如何在vue项目中使用cesium,使用离线地图资源

    这篇文章主要介绍了cesium开发之如何在vue项目中使用cesium,使用离线地图资源问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • 解决使用Vue.js显示数据的时,页面闪现原始代码的问题

    解决使用Vue.js显示数据的时,页面闪现原始代码的问题

    下面小编就为大家分享一篇解决使用Vue.js显示数据的时,页面闪现原始代码的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-02-02

最新评论