0

我有一个 dot net mvc 项目,人们在服务器端生成报告。为了允许从网络下载报告,我在控制器中有一个返回文件的函数。

public FilePathResult DownloadResult(int id) {

     Result res = MyModel.GetResultById(id);

     if (res.DownloadPath != null)
     {
        return File(res.DownloadPath, "application/zip", Path.GetFileName(res.DownloadPath));
     }
}

现在我想使用 WebClient 下载这个文件

WebClient wc = new WebClient(); wc.DownloadFile("ServerUrl" + resultId, filename);

我的问题是保存下载的文件与服务器返回的名称相同。控制器上的 DownloadResult 方法返回带有名称的文件 [如代码所示 Path.GetFileName(res.DownloadPath)] 但在客户端我不知道文件服务器的名称正在返回。我必须反过来在 wc.DownloadFile 中给出一个本地文件名作为参数

有没有办法知道它返回的文件名服务器,以便我可以使用与服务器上相同的名称在本地保存我的文件。

4

1 回答 1

0

您可以检查返回的 Httpheader:

内容处置:附件;文件名=文件名

我不是 100% 确定 mvc 会返回这个,但我认为当你返回 FilePathResult 时,你可以设置 Httpheader。

您当然可以将此添加到您的回复中:

Response.AppendHeader("Content-Disposition", "attachment; filename=" + Path.GetFileName(res.DownloadPath));
于 2013-05-08T09:20:56.673 回答