el-upload 返回值是文件流 怎么下载
时间: 2023-10-13 21:25:27 浏览: 51
如果 el-upload 返回的是文件流,你可以将其转化为 Blob 对象,然后使用 URL.createObjectURL() 方法生成一个临时的 URL,最后通过创建一个 a 标签并设置其 href 属性为该 URL,然后模拟点击该 a 标签实现下载。以下是示例代码:
```javascript
// 获取 el-upload 返回的文件流
const fileStream = await this.$refs.upload.uploadFiles[0].response
// 将文件流转换为 Blob 对象
const blob = new Blob([fileStream])
// 生成临时 URL
const url = URL.createObjectURL(blob)
// 创建 a 标签并设置 href 属性
const link = document.createElement('a')
link.href = url
// 设置下载的文件名
link.download = '文件名'
// 模拟点击 a 标签进行下载
link.click()
// 释放 URL 对象
URL.revokeObjectURL(url)
```
注意:以上代码中的 `this.$refs.upload.uploadFiles[0].response` 应该是你上传文件后 el-upload 组件返回的响应数据,需要根据你的具体情况进行相应的更改。
相关问题
el-upload 怎么判断返回值是JSON 还是文件流格式
el-upload 组件在接收到上传成功的响应时,会尝试自动解析响应数据,如果解析失败则默认为文件流格式,否则默认为 JSON 格式。如果你想手动指定解析格式,可以使用 `:response-format` 属性。
例如,如果你想将响应数据解析为文件流格式,可以这样写:
```html
<el-upload
action="/upload"
:response-format="'blob'"
>
<!-- ... -->
</el-upload>
```
如果你想将响应数据解析为 JSON 格式,可以这样写:
```html
<el-upload
action="/upload"
:response-format="'json'"
>
<!-- ... -->
</el-upload>
```
el-upload 接收后台返回值汉字显示问号
el-upload 组件接收后台返回的值出现问号,通常是由于编码问题导致的。建议在后台返回数据时,将数据编码为 UTF-8 格式,可以避免出现汉字问号的情况。
如果已经确认后台返回数据编码正确,可以尝试在 el-upload 组件中设置文件上传编码为 UTF-8,例如:
```
<el-upload
action="/upload"
:before-upload="beforeUpload"
:on-success="onSuccess"
:on-error="onError"
:headers="headers"
:data="{ encoding: 'utf-8' }"
>
<el-button slot="trigger">选取文件</el-button>
<el-button style="margin-left: 10px;" type="primary" slot="tip">上传文件</el-button>
</el-upload>
```
其中,`:data="{ encoding: 'utf-8' }"` 用于设置上传文件的编码格式为 UTF-8。