Застегните Json чтобы скачать - PullRequest
0 голосов
/ 04 апреля 2019

У меня есть этот метод, который возвращает jsonresult, созданный из модели.Вместо того, чтобы возвращать json-файл, я хочу вернуть его в виде zip-файла.Как бы я это сделал?Я использовал 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);
            }

return Ok (ms.ToArray ());}

но все равно не работает.Я получаю сжатый JSON, но не почтовый индекс.какой другой подход я могу использовать?

...