Отправка изображения через POST Multipart (HTTPRequest) - PullRequest
2 голосов
/ 20 февраля 2010

Я пытаюсь отправить изображение на сервер, используя HTTP Post Multipart.Все остальное в порядке, у меня есть все границы и прочее.

Но что я должен сделать с изображением перед рукой?Должен ли я преобразовать его в двоичный файл?Вот данные заголовка из заголовка (используя Fiddler).Это то, что мне нужно загрузить:

-----------------------------7daea2aa40c80
Content-Disposition: form-data; name="pict"; filename="pic.jpeg"
Content-Type: image/pjpeg

<Binary here ... or at least I think it is> ..
�����JFIF���������C� (lots more of this I removed)

Любой совет?

Ответы [ 2 ]

2 голосов
/ 21 февраля 2010

Вы можете использовать функцию File.ReadAllBytes для чтения файла в байт []. Оттуда вы можете использовать StreamWriter для вывода байтов в ваш ответ. Конверсия не требуется.

0 голосов
/ 09 мая 2010

В идеале вы хотите использовать Content-Transfering-Encoding, установленный на base64. Затем вы просто делаете File.ReadAllBytes, если ваш файл в байтовом массиве, чтобы затем использовать метод Convert.ToBase64String для преобразования в base64.

Подробнее об этом можно прочитать в статье в Википедии о MIME

Пример

string data =
       @"----------------------------7daea2aa40c80\n";
       + @"Content-Disposition: form-data; name="pict"; filename="{0}"\n"
       + @"Content-Type: image/pjpeg\n";
       + @"\n{1}";

string filename = "pict.jpg";
string bytes = Convert.ToBase64String(File.ReadAllBytes(filename));
string request = string.Format(data, filename, bytes);
...