Невозможно вернуть метаданные DICOM после декодирования из строки base64 - PullRequest
1 голос
/ 14 июня 2019

Я отправляю изображения DICOM в мой API, кодируя как base64 из внешнего интерфейса, который находится в Angular CLI. Кроме того, у меня есть Rest API для получения этих закодированных изображений DICOM и их декодирования до того, как с ними был какой-то процесс. Но после декодирования изображения DICOM в поток памяти метаданные изображений DICOM теряются. Ценно, если бы я нашел лучшее решение. Пожалуйста, найдите мои коды ниже.

//Angular code
var file = event.dataTransfer ? event.dataTransfer.files[i] : 
event.target.files[0];
    //var pattern = /.dcm/;
    var reader = new FileReader();
    reader.onload = this._handleReaderLoaded.bind(this);
    reader.readAsDataURL(file);


//Web API Code
[HttpPost("UploadFile/{Id}")]
public async Task<IActionResult> UploadFile(int Id, [FromBody] DICOMFiles 
dicomfiles)
{
 String base64Encoded = encodedImage;
                        string output = 
 encodedImage.Substring(encodedImage.IndexOf(',') + 1);
                        byte[] data = Convert.FromBase64String(output);
 MemoryStream stream = new MemoryStream(data);
 client.UploadFile(stream, "Projects/test_images/Test.dcm");
}

1 Ответ

0 голосов
/ 20 июня 2019

Наконец-то я нашел решение для этого.Проблема не в декодировании из base64.Фактическая проблема связана с вызовом метода client.UploadFile ().

Перед использованием client.uploadfile () нам необходимо убедиться, что объект потока памяти указывает на позицию «0».Это позволит методу client.UploadFile () создавать и записывать все содержимое упомянутого файла с начала массива byte [].мы можем сделать это, как указано ниже.

    stream.Position = 0;
...