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

Com*_*ius 3 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)
Run Code Online (Sandbox Code Playgroud)

我编写了以下代码将文件上传到服务器:

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;
Run Code Online (Sandbox Code Playgroud)

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

提前感谢您的帮助。

Tar*_*o R 5

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

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