pdf上传后,使用pdf.js 预览该pdf,比如在页面使用 <iframe v-if=“newType === ‘pdf’” id=“newpdf” :src=“newSrc”></iframe>,如何获取上传后的newSrc,并赋值
时间: 2024-09-22 22:01:07 浏览: 34
要在Vue应用中使用PDF.js预览上传的PDF,你需要经历以下几个步骤:
1. **文件上传**:当用户选择并上传PDF文件时,你需要在后端保存文件并返回一个新的URL。这通常会涉及一个API端点,如之前提到的`saveAndGenerateUrl`方法。后端返回的URL应类似于`http://example.com/files/file.pdf`。
2. **前端接收新地址**:在前端,你可以通过AJAX或者其他HTTP请求的方式向后端发送上传文件的表单或blob数据,获取到新的文件URL。
```javascript
import axios from 'axios';
export default {
methods: {
uploadPdf(file) {
axios.post('/api/upload', { file }, { responseType: 'blob' }).then(response => {
this.newSrc = URL.createObjectURL(response.data); // 这里假设response.data是文件的blob对象
});
}
},
};
```
3. **预览PDF**:使用`<iframe>`标签并动态设置`src`属性为刚刚获取的新URL。
```html
<template>
<div>
<button @click="uploadPdf">Upload PDF</button>
<iframe v-if="newType === 'pdf'" ref="newPdf" id="newpdf" :src="newSrc"></iframe>
</div>
</template>
...
```
确保在`mounted`生命周期钩子中初始化`newType`变量,然后在成功上传后将其设为`'pdf'`,以便显示`<iframe>`。
4. **清理内存引用**:记得在不需要时,清除`<iframe>`的`srcObject`,防止浏览器内存泄漏:
```javascript
beforeDestroy() {
if (this.newPdf && this.newPdf.srcObject) {
this.newPdf.srcObject.getBlob().then(blob => blob.remove());
}
}
```
现在你已经设置了`newSrc`,文件上传后会在`<iframe>`中预览PDF。
阅读全文