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 => {
})
相关推荐
刀法如飞1 小时前
TypeScript 数组去重的 20 种实现方式,哪一种你还不知道?
前端·javascript·算法
_风满楼2 小时前
TDD实战-会议室冲突检测的红绿重构循环
前端·javascript·算法
Rkgua2 小时前
JS中的惰性函数基本介绍
前端·javascript
客场消音器2 小时前
我用两周半 Vibe Coding 做了一个前额叶训练的微信小程序
前端·javascript·后端
azhou的代码园4 小时前
基于SpringBoot+Vue的家教小程序
vue.js·spring boot·小程序·毕业设计·家教小程序
不考研当牛马5 小时前
HTML CSS 新手大全初学者必看 (含有部分 JavaScript)
javascript·css·html
卷帘依旧5 小时前
Promise链式调用原理
前端·javascript
threelab5 小时前
Three.js 图像粒子飞线效果 | 三维可视化 / AI 提示词
开发语言·javascript·人工智能
anyup5 小时前
全面重构的 uni-app 多平台上传组件,功能强到离谱!
前端·vue.js·uni-app
Mr数据杨6 小时前
【Codex】用PPT文案额外描述优化课件生成细节
java·javascript·django·powerpoint·codex·项目开发