vue中对pdf文件和路径的处理

根据url预览pdf文件

地址栏输入url可以直接预览的pdf,这种我们可以直接使用vue-pdf进行预览

js 复制代码
<div class="animation-box-pdf">
 	<pdf :src="url" />
 </div>

<script>
import Pdf from 'vue-pdf'

export default {
  components: {
    Pdf,
  },
  data() {
    return {
      url: 'http://xxx/xxx/test.pdf',
    }
  },
  methods: {
  }
}

把文件的url地址转成base64字符串

有时候我们拿到了文件的url,需要把这个url的文件内容转成base64字符串,作为参数传给后端

js 复制代码
async handleUrlToBase64(type) {
      // 把文件的url地址转成base64字符串
      
      const fileBase64 = await new Promise((resolve) => {
        // 使用Fetch API获取PDF文件内容
        fetch('https://example.com/path.pdf')
          .then(response => response.blob()) // 将响应转换为Blob对象
          .then(blob => {
    	    // 使用FileReader读取Blob并转换为base64字符串
            let reader = new FileReader();
            reader.onload = function() {
              // 注意:这个地方的base64是截取了,后面的字符串的,需要注意是否截取字符串
              resolve(reader.result.split(',')[1]); // 转换后的base64字符串
            };
            reader.readAsDataURL(blob); // 以DataURL形式读取Blob
          })
        .catch(error => {
          this.$YsMessage.error("文件解析失败");
        });
      });
      
      console.log(fileBase64) // base64字符串
      // 调接口传base64字符串
    },
  },

根据返回的文件流预览pdf文件

后端接口返回的是文件流,我们需要将文件流预览到页面展示。

我们将文件流转成url,并预览url(预览就可以直接使用url借助vue-pdf进行预览了)

js 复制代码
    handleBinaryToUrl(binary) {
      const url = window.URL.createObjectURL(
        new Blob(binary, {
          type: "application/pdf;charset=utf-8",
        })
      );
      this.url = url;
    },

把文件流上传到服务器,把上传后的路径传给后端\

需要将文件流转成blob上传

js 复制代码
// const blob = new Blob([pdfFileStream], { type: 'application/pdf;charset=utf-8' });
const formData = new FormData();
const fileName = `test.pdf`;
formData.append('file', this.blob, fileName);
fetch('/api/upload', {
  method: 'post',
  body: formData
})
.then(res => {
  const filePath = `webDownLoad/xxxx/${fileName}`;
  // 将filePath传给后端
})
.catch(err => {
})
相关推荐
A黄俊辉A3 天前
uniapp webview中实现 app和内嵌的H5双向通信
vue.js·json
三十而立洋3 天前
Cookie 详解:从产生到安全,一次讲透
前端·javascript
卡布鲁3 天前
把一个 Vite + Vue3 应用塞进 qiankun (React + Umi3) 主站:十个坑的复盘
前端·javascript·react.js
李少兄3 天前
JavaScript 隐式全局变量解析
javascript
honkun63 天前
vue 表格组件 vxe-table 配置 ajax 请求自动加载数据与表单查询
vue.js·vxe-table
kybs19913 天前
全球灾害数据分析可视化 毕业设计-附源码66794
vue.js·spring boot·mysql·安全·django·c#·asp.net
雪芽蓝域zzs4 天前
第26章:ECharts 自定义主题 + 页面一键切换主题(深色 / 浅色两套)
vue.js·echars
雪芽蓝域zzs4 天前
第22章:ECharts 图表联动(多图表交互联动)
vue.js·echars
daols884 天前
vue 表格组件 vxe-table 实现虚拟滚动与无需滚动加载
vue.js·vxe-table
雪芽蓝域zzs4 天前
第18章:ECharts 折线图 + 标记点、标记线,自定义 tooltip
vue.js·echars