Swagger如何配置以便可以成功下载Excel吗
有人知道该如何配置Swagger
支持下载Excel吗?
为什么点击下载之后 文件打不开呢? 提示: can't be opened for some reason
代码: Flask + flasgger
response = make_response(send_file(save_path))
response.headers["Content-Disposition"] = "attachment; filename=download.xls;"
return response
改成如下配置后 效果一样
produces:
- application/octet-stream
parameters:
- in: formData
name: file
type: file
required: true
description: Upload your excel file.
responses:
200:
description: 处理后的文章下载
schema:
type: file
虽然页面上多了
但是并未生效 还是一样
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
你应该把请求的
Accept
设置成application/octet-stream
.这其实有的奇怪, 因为一般情况下 Excel 文件的 Accept 是
application/vnd.ms-excel
.但是由于 flasgger 是使用 swagger-ui 作为前端, 而 Swagger 发送文件类请求是使用 superagent, 使用的是 blob 技术, 需要设置 xhr 的 ResponseType 为
blob
.我们看
flasgger_static/lib/http.js
:只在 Accept 匹配为
image/i
,/^application\/pdf/
,/^application\/octet-stream/
, 才将 responseType 设置成blob
所以要么将
/^application\/vnd.ms-excel/
这个匹配加入http.js
, 要么将发送的请求全部设置成application/octet-stream
.也就是这样设置
produces
:app.py
:比如现在的目录结构:
demo.py:
apidocs页面: