无法从C#应用程序上传文件到Orthanc服务器

时间:2018-04-24 11:06:09

标签: c# file-upload dicom

我正在尝试将DICOM文件上传到本地Orthanc服务器,但我收到的错误是:

Unknown Tag & Data (2d2d,6664) larger (1647393075) than remaining bytes (76) in file, premature end of stream
E0424 16:02:20.786940 FromDcmtkBridge.cpp:1925] Cannot parse an invalid DICOM file (size: 84 bytes)

我已经编写了以下代码来在服务器上上传文件:

DicomFile dicomfile = new DicomFile(dataset);
dicomfile.Save("dicomfile.dcm");

////finally uploading the file to Orthanc
String dcm = File.ReadAllText("./test9signedLimited.dcm");

HttpClient client = new HttpClient();

client.DefaultRequestHeaders.Add("ContentType", "multipart/form-data");
HttpContent content = new MultipartFormDataContent();

content.Headers.ContentType= new MediaTypeHeaderValue("multipart/form-data");

var response = client.PostAsync("http://localhost.:18888/instances", content).Result;

response.EnsureSuccessStatusCode();
var r = response.Content.ReadAsStringAsync().Result;

注意我尝试使用POSTMAN上传相同的文件,并在那里成功上传。

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:4)

对C#一无所知,但我现在看到代码中有两个问题。

  1. 您从磁盘读取DICOM文件,但我没有看到任何代码将DICOM数据实际附加到POST请求。看来,您发布的是一个只有标题的空请求。
  2. 您使用File.ReadAllText从磁盘读取DICOM文件,该文件返回String。这似乎不对,因为DICOM是一种二进制格式,将其转换为字符串很可能会破坏它。您更可能需要一个带有DICOM数据的字节数组来附加到POST请求。

答案 1 :(得分:0)

尽管此答案未涵盖C#解决方案,但您有一个python选项可能会对您有所帮助。 Orthanc Server [1]为服务器提供sending DICOM images的解决方案。说明如下。

python ImportDicomFiles.py localhost 8042 ~/DICOM/

[1] Jodogne,S.,2018年。用于医学成像的Orthanc生态系统。数字成像学报,第31卷第3期,第341-352页。