压缩Json以允许下载

时间:2019-04-04 15:25:38

标签: json zip jsonresult

我有这个方法,它返回从模型创建的jsonresult。我想返回的是zip文件,而不是返回json文件。我该怎么办? 香港专业教育学院使用zipFile,它对我不起作用: 这是我的原始代码:

    [System.Web.Http.HttpGet]
    [System.Web.Http.Route("getData")]
    [APIAuthenticate(Tool = "myData", Action = "Export")]
    public JsonResult<Models.Gtri.userData> GetALLUserData(int pomYear = 21)
    {
        Func<Dualie, Models.Gtri.Investments> Convert2Flint = (dualie) => IssueRepository.ConvertToFlintModel(dualie);

        using (REALM_Entities db = new REALM_Entities())
        {
            List<Dualie> userToExport= db.Dualie.Where(dualie => dualie.Issue_Status.ID != 0)
                                                      .ToList();

            foreach (var dualie in dualiesToExport)
            {
                dualie.FundingLine_Details = dualie.FundingLine_Details.Where(fd => !fd.IsArchived).ToList();
            }

            Models.Gtri.FlintModel model = new Models.Gtri.FlintModel()
            {
                CreationDate = DateTime.UtcNow.ToString("o"),
                SchemaVersion = "2",
                PomYear = $"20{pomYear.ToString()}",
                Investments = dualiesToExport.Select(d => Convert2Flint(d)).ToList()
            };
            return Json(model);
        }
    }

我尝试在我的代码中使用它:

            var jsonString = Json(model).ToString();
            var bytes = Encoding.UTF8.GetBytes(nostring.ToString());
            var ms = new MemoryStream();
            using (ZipFile zipFile = new ZipFile())
            {
                zipFile.Name = "test.zip";
                zipFile.AddEntry(zipFile.Name, bytes);

                zipFile.Save(ms);
            }

返回Ok(ms.ToArray()); }

但是它仍然不起作用。我得到一个压缩的json但没有一个zip。 我还能采取什么其他方法?

0 个答案:

没有答案