vue中上传文件时,不管上传什么样的文件格式,下载时总是.txt的格式,并且文件内容乱码
时间: 2023-12-05 18:06:17 浏览: 30
这种情况可能是因为上传文件时没有正确设置文件类型,导致下载时文件类型被误判为.txt。你可以尝试在上传文件的时候,设置 `Content-Type` 头部,指定正确的文件类型。
另外,文件内容乱码可能是因为文件编码格式不一致或者不正确。你可以尝试在上传文件时,指定正确的编码格式,比如UTF-8。
以下是一个示例代码:
```javascript
// 上传文件
axios.post('/upload', formData, {
headers: {
'Content-Type': file.type // 设置文件类型
}
}).then(res => {
console.log(res)
})
// 下载文件
axios.get('/download', {
responseType: 'blob' // 指定响应类型为二进制流
}).then(res => {
// 创建一个链接
const url = window.URL.createObjectURL(new Blob([res.data]))
// 创建一个a标签,设置下载链接和下载文件名
const link = document.createElement('a')
link.href = url
link.setAttribute('download', fileName)
// 模拟点击下载链接
document.body.appendChild(link)
link.click()
// 释放链接资源
window.URL.revokeObjectURL(url)
})
```
在这个示例中,我们在上传文件时设置了 `Content-Type` 头部,指定了正确的文件类型,同时在下载文件时指定了响应类型为二进制流,并且创建了一个a标签,设置了下载链接和下载文件名。这样就可以成功下载并打开正确的文件了。