问题是点击链接会直接下载
时间: 2024-04-27 20:21:41 浏览: 105
如果你的链接是直接下载文件的链接,而不是文件预览链接,那么你可以在前端中使用 `XMLHttpRequest`(简称XHR)来请求文件,然后将请求到的文件通过前端代码来进行预览。
比如,你可以在Vue.js组件中创建一个`<a>`标签,通过监听`click`事件来触发XHR请求,并通过`Blob`对象将请求到的文件转换成URL,最后使用`window.open()`方法来打开预览链接。
以下代码演示了如何实现这个过程:
```vue
<template>
<div>
<a href="#" @click.prevent="previewFile">Preview File</a>
</div>
</template>
<script>
export default {
name: 'FilePreview',
methods: {
previewFile() {
const xhr = new XMLHttpRequest()
xhr.open('GET', 'https://www.example.com/example.pdf', true)
xhr.responseType = 'blob'
xhr.onload = () => {
if (xhr.status === 200) {
const blob = new Blob([xhr.response], { type: 'application/pdf' })
const url = URL.createObjectURL(blob)
window.open(url)
}
}
xhr.send()
}
}
}
</script>
```
在上面的代码中,我们通过 `XMLHttpRequest` 对象来请求文件,并监听 `load` 事件来获取到请求到的文件。然后使用 `Blob` 对象将文件转换成 URL,并使用 `window.open()` 方法来打开预览链接。
需要注意的是,不同类型的文件会有不同的 MIME 类型,所以在转换 `Blob` 对象时需要使用正确的 MIME 类型。如果你需要预览的文件类型比较多,可以通过判断文件后缀名等方式来动态设置 MIME 类型。
阅读全文