Сохранение файла base64 строка в SQL База данных сервера - PullRequest
0 голосов
/ 14 февраля 2020

Я работаю над загрузкой файла, при загрузке файл преобразуется в строку base64, и эта строка отправляется в API, который сохраняет строку в SQL таблице базы данных сервера.

Тип Столбец строки base64 в таблице равен NVARCHAR(MAX), но я заметил, что при сохранении файла SQL обрезает строку так, что при преобразовании в режиме онлайн с использованием base64 в декодер изображений он создает только часть всего изображения, и я заметил, что Строка base64 перед сохранением в SQL составляет около 72 000 символов, но после сохранения SQL уменьшается до 4000, что отвечает за неполное декодированное изображение.

Почему SQL усекает base64 строка и что я могу сделать, чтобы помочь моей ситуации?

Вот мой код преобразования base64:

public async Task<IActionResult> UploadFile()
{
    string base64string;
    var myFile = Request.Form.Files["claimFile"];
    var filetype = myFile.ContentType;
    var filepath = Path.GetTempFileName();
    using (var stream = System.IO.File.Create(filepath))
    {
        await myFile.CopyToAsync(stream);
    }
    byte[] imageByte = System.IO.File.ReadAllBytes(filepath);
    base64string = Convert.ToBase64String(imageByte);
    HttpContext.Session.SetString("Base64Str", base64string);
    return new EmptyResult();
}

1 Ответ

1 голос
/ 14 февраля 2020

Я подозреваю, что проблема может заключаться в том, что, указав NVARCHAR (16-байтовые символы), вы непреднамеренно «портите» строку.

ДВА ПРЕДЛОЖЕНИЯ:

  1. Переопределить столбец как VARCHAR(MAX)

  2. Сохраните строку с uuencoded, затем прочитайте текст обратно и посмотрите, соответствуют ли сохраненные / полученные значения строки.

Смотрите здесь:

https://dba.stackexchange.com/questions/212160/why-do-i-get-incorrect-characters-when-decoding-a-base64-string-to-nvarchar-in-s

Пожалуйста, напишите, что вы найдете!

Также - из любопытства - как дела с кодировкой Base64?

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