Чтение загруженного файла в виде строкового массива - PullRequest
0 голосов
/ 19 октября 2018

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

  public async Task<string> Upload()
    {
        // get Id of GSM
        string id = HttpContext.Current.Request.Form["id"];
        // get Current logged in user
        var userId = User.Identity.GetUserId();

        var provider = new MultipartMemoryStreamProvider();
        var test = await Request.Content.ReadAsMultipartAsync(provider);

        // extract file name and file contents
        var fileNameParam = provider.Contents[0].Headers.ContentDisposition.Parameters.FirstOrDefault(p => p.Name.ToLower() == "filename");
        string fileName = (fileNameParam == null) ? "" : fileNameParam.Value.Trim('"');

        //read as byte array
        byte[] file = await provider.Contents[0].ReadAsByteArrayAsync();
        // read as string
        string text = System.Text.Encoding.UTF8.GetString(file);

       // Convert to string array???

        var result = string.Format("Received '{0}' with length: {1}", fileName, file.Length);
        return text;

    }

1 Ответ

0 голосов
/ 19 октября 2018

Это будет читать текстовый файл построчно из загруженного файла, а затем записывать строки, которые вы хотите сохранить, в потоковую запись с базовым потоком памяти, чем просто вызвать .ToArray(), чтобы получить байтовый массив, который вам нужно сохранитьв базе данных.SomeCondition в коде определит, какие строки сохранить.

byte[] byteArray;
using (var targetStream = new MemoryStream())
using (var writer = new StreamWriter(targetStream))
using (var reader = new StreamReader(await provider.Contents[0].ReadAsStreamAsync()))
{
    while (!reader.EndOfStream)
    {
        var line = reader.ReadLine();
        if(SomeCondition)
           writer.WriteLine(line);
    }
    byteArray = targetStream.ToArray();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...