Создайте Json -файл из содержимого веб-сайта и загрузите его - PullRequest
0 голосов
/ 26 мая 2020

Я должен реализовать на своем веб-сайте функцию, которая создает файл Json из списка бронирований и загружает его, когда я использую кнопку экспорта на сайте. И я понятия не имею, как это работает ^^ Веб-сайт выглядит так:

До сих пор у меня есть только следующий код:

[HttpGet]
    public IActionResult Export()
    {
        var bookings = _cache.GetOrCreate(BookingsCacheKey, BookingListFactory);
        string output = JsonConvert.SerializeObject(bookings);
        return View("Index");
    }

Заказы сохранены в списке IList под названием бронирования. И список сохраняется в кеше.

Спасибо за помощь :)

Ответы [ 2 ]

1 голос
/ 26 мая 2020

вы можете просто вернуть объект через ответ Ok

[HttpGet]
public IActionResult Export()
{
    var bookings = _cache.GetOrCreate(BookingsCacheKey, BookingListFactory);
    string output = JsonConvert.SerializeObject(bookings);

    byte[] bytes = System.Text.Encoding.UTF8.GetBytes(output);
    var output = new FileContentResult(bytes, "application/octet-stream");
    output.FileDownloadName = "download.txt";

    return output;
}

посмотрите Этот пост

0 голосов
/ 26 мая 2020

, если вы сохраняете файл в папке сервера, вы можете использовать его как загружаемый файл.

Пример:

var test = new
{
    Id = 0,
    contains = "Test"
};//Save the file
string json = JsonConvert.SerializeObject(test);
System.IO.File.WriteAllText(@"wwwroot\\json\\test.json", json);


string fileName = "test.json";//Find the file in the path
var path = Path.Combine(Directory.GetCurrentDirectory(), @"wwwroot\\json\\", fileName);
var memory = new MemoryStream();
using (var stream = new FileStream(path, FileMode.Open))
{
    await stream.CopyToAsync(memory);
}
memory.Position = 0;//Return file with donwload
return File(memory, GetContentType(path), Path.GetFileName(path));

Вспомогательные методы GetContentType и GetMimeTypes:

private string GetContentType(string path)
{
    var types = GetMimeTypes();
    var ext = Path.GetExtension(path).ToLowerInvariant();
    return types[ext];
}

private Dictionary<string, string> GetMimeTypes()
{
    return new Dictionary<string, string>
    {
        {".json", "application/json"}

     };
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...