首页 新闻 会员 周边

.NetCore返回文件流,二进制乱码问题!如何将文件下载下来?

0
悬赏园豆:10 [已解决问题] 解决于 2020-08-04 10:33

这个是我的方法

然后打印出来是这样

使用Ajax请求接口

问题补充:

使用 比较原始的 XMLHttpRequest 倒是可以实现,但是Ajax是基于 XMLHttpRequest 的吧,Ajax有没有办法实现

爱吃鲸的虾的主页 爱吃鲸的虾 | 菜鸟二级 | 园豆:201
提问于:2020-07-31 15:14
< >
分享
最佳答案
0

后台返回二进制流,比如返回的是图片的二进制流,使用 XMLHttpRequest 可以通过设置 ResponseType 为具体的返回类型(blob),然后通过a标签的download去下载,Ajax 的话使用 xhrFields ,这xhrFields中设置{ responseType: "blob" }

爱吃鲸的虾 | 菜鸟二级 |园豆:201 | 2020-08-03 09:11
其他回答(4)
0

return File(buffer, "application/octet-stream","xxxx.jpg");

前端用 window.open 就可以

收获园豆:4
Bear丶Grylls | 园豆:206 (菜鸟二级) | 2020-07-31 15:37

window.open 的参数是需要一个url吧,我后台返回的是文件流,我不知道我的文件流返回的是否正确,因为它现在是乱码,想了解文件流的处理方法

支持(0) 反对(0) 爱吃鲸的虾 | 园豆:201 (菜鸟二级) | 2020-07-31 16:42
0

如果想下载,你得告诉浏览器这是个文件,具体看楼上。。。

收获园豆:3
顾晓北 | 园豆:10844 (专家六级) | 2020-07-31 15:46

通过 Blob和a标签可以下载一个文件下来,但是这个文件是错误的、打不开的,而且文件大小和原本的文件页不符
这个是原来的文件

这个是通过 后台返回文件流 下载下来的文件

支持(0) 反对(0) 爱吃鲸的虾 | 园豆:201 (菜鸟二级) | 2020-07-31 16:48

@爱吃鲸的虾: 你现在想要干什么?下载?

支持(0) 反对(0) 顾晓北 | 园豆:10844 (专家六级) | 2020-07-31 17:34

@顾晓北: 对,把图片下载下来

支持(0) 反对(0) 爱吃鲸的虾 | 园豆:201 (菜鸟二级) | 2020-08-03 08:46

@爱吃鲸的虾: 既然是下载,只要按楼上说的,你告诉浏览器这是文件,然后window.open就行了,建议是根据参数返回不同的文件,然后直接window.open

支持(0) 反对(0) 顾晓北 | 园豆:10844 (专家六级) | 2020-08-03 09:37
0

既然叫二进制~~跟码有什么关系。

看起来你是说图片chrome没显示,那么头是否正确;或者“另存”后其他先确定是否文件是否一致。

不一致再说不一致的问题。

收获园豆:3
花飘水流兮 | 园豆:13560 (专家六级) | 2020-08-01 20:00

使用 XMLHttpRequest 并把返回类似设置为blob,返回回来的数据是正确的,并且下载的图片也是正确的,我现在的问题是 如何使用Ajax如何把返回二进制流文件下载下来

支持(0) 反对(0) 爱吃鲸的虾 | 园豆:201 (菜鸟二级) | 2020-08-03 08:58
0

楼主,这个问题最后如何解决了?

sky97 | 园豆:202 (菜鸟二级) | 2021-11-09 21:52
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册