最近在开发中遇到一个奇葩的问题,下载 Excel,文件可以成功下载,但是无法打开(文件损坏)。此处仅记录一下,以便后面再遇到相同的问题。
这里先说结论,在下载 blob 文件时,不能使用 mock.js。
本来下载一个二进制流文件,在日常的开发中很常见。
1 | axios({ |
但是下载下来的文件却无法打开,然后一度怀疑是编码的问题。尝试了各种打开方式,都不能打开,但是单独打开却可以下载。
我甚至想要直接在新 tab 页中打开下载链接了(这是 get 请求)。然后试着移除 mock.js,成功了!
后面才发现 mock 会拦截所有的请求,匹配规则的就使用模拟数据,不匹配的也会使用封装后的 request 请求后台。所以这样会导致下载的文件流损坏。
[越努力,越幸运!]