Невозможно загрузить файл на сервер Orthanc из приложения C # - PullRequest
0 голосов
/ 24 апреля 2018

Я пытаюсь загрузить файл 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 голосов
/ 05 апреля 2019

Хотя этот ответ не охватывает решение C#, у вас есть вариант python, который может вам помочь.Сервер Orthanc [1] имеет решение для отправки изображений DICOM на сервер.Инструкции заключаются в следующем.

python ImportDicomFiles.py localhost 8042 ~/DICOM/

[1] Jodogne, S., 2018. Ортановая экосистема для медицинской визуализации.Журнал цифровых изображений, 31 (3), с. 341-352.

0 голосов
/ 24 апреля 2018

Ничего не зная о C #, но на данный момент я вижу две проблемы в коде.

  1. Вы читаете файл DICOM с диска, но я не вижу кода, который можно было бы прикрепитьданные DICOM для запроса POST.Похоже, что вы публикуете пустой запрос только с заголовками.
  2. Вы используете File.ReadAllText для чтения файла DICOM с диска, который возвращает String.Это кажется неправильным, поскольку DICOM - это двоичный формат, и преобразование в него в строку более чем вероятно приведет к его поломке.Скорее всего, вам потребуется байтовый массив с данными DICOM для подключения к запросу POST.
...