从 base64 字符串解码后无法取回 DICOM 元数据
Cannot get back the DICOM metadata after decode from base64 string
我正在通过 Angular CLI 中的前端编码为 base64 将 DICOM 图像发送到我的 API。另外,我有休息 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");
}
最后,我找到了解决办法。问题不在于从 base64 解码。实际问题出在 client.UploadFile() 方法调用上。
在使用client.uploadfile()之前,我们需要确保内存流对象指向位置“0”。这将允许 client.UploadFile() 方法从 byte[] 数组的开头创建和写入上述文件的所有内容。我们可以按照下面的说明进行操作。
stream.Position = 0;
我正在通过 Angular CLI 中的前端编码为 base64 将 DICOM 图像发送到我的 API。另外,我有休息 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");
}
最后,我找到了解决办法。问题不在于从 base64 解码。实际问题出在 client.UploadFile() 方法调用上。
在使用client.uploadfile()之前,我们需要确保内存流对象指向位置“0”。这将允许 client.UploadFile() 方法从 byte[] 数组的开头创建和写入上述文件的所有内容。我们可以按照下面的说明进行操作。
stream.Position = 0;