前端采用 <a>
标签的形式进行下载,正常下载时直接触发浏览器下载,但下载失败时会返回 application/json
的响应体,前端会直接在一个新页面显示 JSON 的内容。
对于 ajax
下载的方式,可以比较好的操控 response
,但需要在接收完整个文件后,才能新建 blob 来触发浏览器下载,在文件较大时会出现明显的空档等待时间(这里需要通过 progess
自己在页面上做进度的反馈,比较麻烦)。
目前我想到的一种方式是,在失败时直接设置 302 的重定向,直接回到当前地址并附加一个 hash
或 params
来标记下载失败及相关信息,前端再在地址中截取 hash
或 params
来获取信息,不过这样看上去也有点麻烦。
针对这几个点,是否有比较合适的解决方案(前后端均可)?
默认的下载不是通过
Content-Disposition
响应头控制的么。失败不设置这个相应头就好了。