Я пытаюсь преобразовать файл в байтовый массив, а затем преобразовать байтовый массив в строку для хранения в базе данных SQLite.Эти файлы очень малы, обычно это всего лишь 10 КБ аудиофайлов.
Моя проблема в том, что данные, записанные в базу данных SQLite, выглядят как приведенные ниже четыре символа, а не строка 10 КБ.
���d
Файл сохраняется в IFormFile и затем преобразуется в байтовый массив.
[HttpPost]
public async Task<IActionResult> UploadSound(IFormFile SoundFile)
{
// convert to base 64
byte[] fileData = null;
using (var memoryStream = new MemoryStream())
{
await SoundFile.CopyToAsync(memoryStream);
fileData = memoryStream.ToArray();
}
}
Затем байтовый массив преобразуется в строку с кодировкой UTF8
Sound sound = new Sound();
sound.SoundString = System.Text.Encoding.UTF8.GetString(fileData);
Эта строка затемсохраненный в базе данных SQLite с использованием структуры сущностей
db.Sounds.Add(sound);
db.SaveChanges();
Если я прошагую программу и перед сохранением проверим значение sound.SoundString
, он будет содержать полный массив байтов размером 10 КБ.Однако в базу данных записываются только четыре символа ���d
.
Мне интересно, есть ли у SQLite проблемы с кодировкой UTF8.Однако я не смог найти решение.