Don*_*ana 2 c# file download asp.net-core-2.2
我的控制器中有这个方法。
public IActionResult Download()
{
return Json(_context.Users);
}
Run Code Online (Sandbox Code Playgroud)
我注意到它生成了正确的 JSON 结构,但它在浏览器中呈现为通用文本。我希望将其下载到客户的计算机上。我怎么做?
我不确定是否应该使我的对象以某种方式进行流式传输,或者在我的硬盘驱动器上创建一个文件并像这样提供它。
我找不到任何让我印象深刻的东西,就像我们在 C# 中所习惯的那样直接、简单。所以我担心我在这里遗漏了一个概念。
您可以将 json 对象写入流或数组并使用File
方法重载之一。添加便捷Serialize
方法
private byte[] Serialize(object value, JsonSerializerSettings jsonSerializerSettings)
{
var result = JsonConvert.SerializeObject(value, jsonSerializerSettings);
return Encoding.UTF8.GetBytes(result);
}
Run Code Online (Sandbox Code Playgroud)
并按如下方式使用它
public IActionResult Download()
{
var download = Serialize(_context.Users, new JsonSerializerSettings());
return File(download , "application/json", "file.json");
}
Run Code Online (Sandbox Code Playgroud)
如果您在Startup
使用中设置特殊的 json 序列化器设置.AddJsonOptions()
,您希望将它们ASP.NET
用作框架在Json
方法中使用它们。注入MvcJsonOptions
控制器
IOptions<MvcJsonOptions> _options;
public YourController(IOptions<MvcJsonOptions> options)
{
_options = options;
}
Run Code Online (Sandbox Code Playgroud)
并将设置传递给方法
public IActionResult Download()
{
var download = Serialize(_context.Users, _options.Value.SerializerSettings);
return File(download , "application/json", "file.json");
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9119 次 |
最近记录: |