【问题标题】:Forward file attachment from Web API to MVC controller将文件附件从 Web API 转发到 MVC 控制器
【发布时间】:2018-08-15 08:01:00
【问题描述】:

我有一个返回 csv 文件的 Web API。如果我发出 GET 请求,例如通过。浏览器,我会弹出一个窗口询问从哪里下载 csv 文件:

HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK);

result.Content = new StringContent(res);
result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
{
    FileName = "export_" + DateTime.Now + ".csv"
};
return ResponseMessage(result);

我正在尝试在另一个 MVC 控制器中调用此 API 端点并返回相同的 csv 文件。我该怎么做?

var httpWebRequest = (HttpWebRequest)WebRequest.Create(webAPIEndpoint);
httpWebRequest.Method = "GET";

var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();

return httpResponse;

【问题讨论】:

  • 您应该查看从 MVC 操作返回 FileStreamResult。将 API 中的数据读入一个流(例如内存流),然后初始化并返回一个 FileStreamResult,其内容类型设置为“text/csv”

标签: asp.net-mvc asp.net-web-api model-view-controller httpwebrequest


【解决方案1】:

MVC 控制器中的响应(路由)通常是ActionResults。您要返回的 httpResponse 对象是 HttpWebResponse

您可能应该从 httpResponse 读取 csv 内容(使用 GetResponseStream),然后使用适当的 MVC ActionResult 返回该 csv 内容。

【讨论】:

    猜你喜欢
    • 2017-08-28
    • 2014-06-08
    • 2014-11-26
    • 2020-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-26
    • 2012-02-09
    相关资源
    最近更新 更多