无法从 C# 应用程序将文件上传到 Orthanc 服务器
Unable to upload file to Orthanc server from C# application
我正在尝试将 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 上传相同的文件,并且已成功上传。
提前感谢您的帮助。
对 C# 一无所知,但目前我在代码中看到两个问题。
- 您从磁盘读入 DICOM 文件,但我没有看到任何代码将 DICOM 数据实际附加到 POST 请求。看来,您正在发布一个只有 headers.
的空请求
- 您使用
File.ReadAllText
从磁盘读取 DICOM 文件,其中 returns 一个 String
。这似乎不对,因为 DICOM 是一种二进制格式,将其转换为字符串很可能会破坏它。您更有可能需要一个包含 DICOM 数据的字节数组来附加到 POST 请求。
尽管此答案未涵盖 C#
解决方案,但您有一个 python
选项可能对您有所帮助。 Orthanc Server [1] has a solution for sending DICOM images 到服务器。说明如下
python ImportDicomFiles.py localhost 8042 ~/DICOM/
[1] Jodogne, S., 2018。用于医学成像的 orthanc 生态系统。数字成像杂志, 31(3), pp.341-352.
我正在尝试将 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 上传相同的文件,并且已成功上传。
提前感谢您的帮助。
对 C# 一无所知,但目前我在代码中看到两个问题。
- 您从磁盘读入 DICOM 文件,但我没有看到任何代码将 DICOM 数据实际附加到 POST 请求。看来,您正在发布一个只有 headers. 的空请求
- 您使用
File.ReadAllText
从磁盘读取 DICOM 文件,其中 returns 一个String
。这似乎不对,因为 DICOM 是一种二进制格式,将其转换为字符串很可能会破坏它。您更有可能需要一个包含 DICOM 数据的字节数组来附加到 POST 请求。
尽管此答案未涵盖 C#
解决方案,但您有一个 python
选项可能对您有所帮助。 Orthanc Server [1] has a solution for sending DICOM images 到服务器。说明如下
python ImportDicomFiles.py localhost 8042 ~/DICOM/
[1] Jodogne, S., 2018。用于医学成像的 orthanc 生态系统。数字成像杂志, 31(3), pp.341-352.