下载的文件未保存在本地。 Wep api + chrome

时间:2018-02-26 16:37:21

标签: google-chrome download header mime-types asp.net-core-webapi

我无法强制使用网络浏览器(chrome)从web api控制器方法中保存(随处)文件。

[HttpGet("download/{id}")] public FileContentResult DownloadFile(int id) { try { var result = classARepository.Get(id); var vm = mapper.Map(result); var jsonResult = JsonConvert.SerializeObject(vm); var fileName = result.Name + ".json"; Response.Headers["Content-Disposition"] = "inline; filename=" +fileName; return File(Encoding.ASCII.GetBytes(jsonResult), "application/octet-stream"); //return File(Encoding.ASCII.GetBytes(jsonResult), "application/json"); } catch (Exception) {} return null; }

在客户端响应看起来没问题:
头:
...
内容处置:直列;文件名= P1.json
的Content-Length:685
内容类型:应用/八位字节流
...

作为响应(Response Tab)是一个json文件。 但是,Web浏览器不会在下载的文件夹中写入文件,或者 - 更期望的选项 - 不允许为保存文件选择位置。

顺便说一句。如果出现问题则返回null并不是一个好主意,是吗?

2 个答案:

答案 0 :(得分:0)

将内容处置更改为:

Response.Headers["Content-Disposition"] = "attachment";

另外我将content-type设置为“application / json”,并且我在客户端将API从jquery get方法更改为window.open(url,...)。

答案 1 :(得分:0)

您需要做的就是返回文件(content_in_bytes,“application / octet-stream”,filename_with_extension);