我正在通过前端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");
}
答案 0 :(得分:0)
最后,我找到了解决方案。问题不在于从base64解码。实际的问题与client.UploadFile()方法调用有关。
在使用client.uploadfile()之前,我们需要确保内存流对象指向位置“ 0”。这将允许client.UploadFile()方法从byte []数组的开头创建和写入所提及文件的所有内容。我们可以按照以下说明进行操作。
stream.Position = 0;