从base64字符串解码后无法获取DICOM元数据

时间:2019-06-14 05:48:36

标签: base64 dicom

我正在通过前端Angular CLI中的base64编码将DICOM图像发送到我的API。另外,我有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 :(得分:0)

最后,我找到了解决方案。问题不在于从base64解码。实际的问题与client.UploadFile()方法调用有关。

在使用client.uploadfile()之前,我们需要确保内存流对象指向位置“ 0”。这将允许client.UploadFile()方法从byte []数组的开头创建和写入所提及文件的所有内容。我们可以按照以下说明进行操作。

    stream.Position = 0;