Hai*_*eng 3 download docx webpack vue.js
我试图在我的个人网站上创建一个下载按钮,供人们下载我的 docx 简历,但遇到了一些问题。
首先我用简单的 href 链接来做到这一点
<a href="xxx.docx" download><button>download my resume</button></a>
Run Code Online (Sandbox Code Playgroud)
但没有用。
然后我尝试了 axois 方式,创建一个按钮,并将单击操作绑定到 downloadFile(){} 方法,但不起作用,出现错误
获取
http://localhost:8080/assets/assets/imgs/cv_eudora.docx404(未找到)Run Code Online (Sandbox Code Playgroud)Uncaught (in promise) Error: Request failed with status code 404 at createError (createError.js?2d83:16) at settle (settle.js?467f:17) at XMLHttpRequest.handleLoad (xhr.js?b50d:59)
我认为这是因为 downloadFile(){} 函数中的 url 部分没有正确说明,但不知道在 vue 中编写路径的正确方法。路径本身应该是正确的,因为当我这样做时,它甚至一路上都有自动提示选项。
Uncaught (in promise) Error: Request failed with status code 404
at createError (createError.js?2d83:16)
at settle (settle.js?467f:17)
at XMLHttpRequest.handleLoad (xhr.js?b50d:59)
Run Code Online (Sandbox Code Playgroud)
<button @click="downloadFile()">download my resume</button>
Run Code Online (Sandbox Code Playgroud)
这里的问题是 Webpack 加载器不适用于<a href>URL,因此默认情况下它们不会包含在您的构建中。
你在这里有两个选择......
将您的文件放入文件夹中并public像这样引用它
export default {
// add the base URL to your component's "data" function
data: () => ({ publicPath: process.env.BASE_URL })
}
Run Code Online (Sandbox Code Playgroud)
<a :href="`${publicPath}cv_eudora.docx`" download>
download my resume
</a>
Run Code Online (Sandbox Code Playgroud)
或者
require()使用该函数显式导入您的文件
<a :href="require('../assets/imgs/cv_eudora.docx')" download="cv_eudora.docx">
download my resume
</a>
Run Code Online (Sandbox Code Playgroud)
然而,要实现此功能,您需要将 Webpack 配置为.docx通过file-loader. 在 中vue.config.js,您可以通过添加新的模块规则来告诉 Webpack 捆绑文档...
module.exports = {
chainWebpack: config => {
config.module.rule('downloads')
// bundle common document files
.test(/\.(pdf|docx?|xlsx?|csv|pptx?)(\?.*)?$/)
.use('file-loader')
// use the file-loader
.loader('file-loader')
// bundle into the "downloads" directory
.options({ name: 'downloads/[name].[hash:8].[ext]' })
}
}
Run Code Online (Sandbox Code Playgroud)
请参阅https://cli.vuejs.org/guide/webpack.html#adding-a-new-loader
| 归档时间: |
|
| 查看次数: |
5432 次 |
| 最近记录: |