我无法强制使用网络浏览器(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并不是一个好主意,是吗?
答案 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);