Как преобразовать byte [] в модель - PullRequest
0 голосов
/ 02 мая 2018

Я читаю ответ , чтобы загрузить файл с помощью MVC. У меня уже есть файл после InputStream.Read, но я не знаю, как его использовать для создания IEnumerable<MyModel>, поэтому я могу отправить его в db с помощью EF. Файл является файлом CSV, я знаю структуру.

public class MyViewModel
{
    [Required]
    public HttpPostedFileBase File { get; set; }
}

[HttpPost]
public ActionResult Index(MyViewModel model)
{
    if (!ModelState.IsValid)
    {
        return View(model);
    }

    byte[] uploadedFile = new byte[model.File.InputStream.Length];
    model.File.InputStream.Read(uploadedFile, 0, uploadedFile.Length);

    // now you could pass the byte array to your model and store wherever 
    // you intended to store it

    return Content("Thanks for uploading the file");
}

Моя модель:

public class PriceViewModel
{        
    public int PriceId { get; set; }

    public int? YearSelected { get; set; }
    public int? WeekSelected { get; set; }
    public int? StateSelected { get; set; }
}

1 Ответ

0 голосов
/ 02 мая 2018

Преобразовать байты в строку

var csv = Encoding.UTF8.GetString(uploadedFile);

, а затем разберите CSV на модели.

CsvHelper должно сильно помочь в этом.

var textReader = new StringReader(csv);
var helper = new CsvHelper(textReader);
IEnumerable<PriceViewModel> records = helper.GetRecords<PriceViewModel>();

Оттуда вы можете проверить данные и сохранить в базе данных.

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