MVC:从同一操作下载文件并返回模型

时间:2016-02-10 14:15:22

标签: angularjs asp.net-mvc

我必须下载文件并使用文件返回模型中的一些数据。

我正在研究它,但我找不到任何结果来做到这一点。现在我可以说“这是不可能的”,但也许你们中的一些人可以回答我的问题。 我需要这样的东西:

...return Json(new {data:"some string", File("some.zip")});

另外,我在客户端使用angularJS。所以要与服务器连接,我使用$http语句,作为responseType,我有“arraybuffer”。

1 个答案:

答案 0 :(得分:1)

您可以对文件进行base64编码,并将其作为JSON属性发送:

Byte[] bytes = File.ReadAllBytes("path");
String file = Convert.ToBase64String(bytes);

// JObject from Newtonsoft Json.net library
var json = new JObject
{
    {"data","some data" },
    {"file", file },
    // You could add some file properties as well :
    {"filesize": 54836 },
    {"filetype": "image/jpeg"},
    {"filename": "profile.jpg"},
};

return Json(json, JsonRequestBehavior.AllowGet);

然后,在您的angular / javascript代码中,您可以参考this article(未经测试)转换回编码文件。