Попытка загрузить форму с помощью файла ввода, получая только поля формы из потока ввода, а не метод File.Request.
Форма содержит файл ввода и пару текстовых полей, поэтому я не могу просто загрузить поток в базу данных.
Я конвертирую в строку, используя этот метод
int len = Convert.ToInt32(context.Request.InputStream.Length);
byte[] stream = new byte[len];
context.Request.InputStream.Read(stream, 0, len);
string mime = Encoding.UTF8.GetString(stream);
, а затем разделите составные данные / данные формы на границах и прочитайте первую строку каждой части, чтобы увидеть, является ли это файлом или нет. Вы можете увидеть полный код Здесь
Файл будет выглядеть примерно так
-----------------------------17901701330412
Content-Disposition: form-data; name="file"; filename="IMG00004-20101209-1704.jpg"
Content-Type: image/jpeg
�����ExifII* ����(1�2�i��Research In MotionBlackBerry 9105HHRim Exif Version1.00a2010:12:09 17:03:59 ��n�0220�v���� � ��� �2010:12:09 17:03:59��� $ &&$ #"(-:1(+6+"#2D36;=@A@'0GLF?K:?@> >)#)>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>��!������ }!1AQa"q2���#B��R��$3br� %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz������������������������������������������������������������������������� w!1AQaq"2�B���� #3R�br� $4�%�&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz�������������������������������������������������������������������������� ?�`��ⳓ5��f)¤b��a�BS�Sb�)Xz�֝�q�"s�K�PA���}F7&��Vm��GӬ��%]� Uҵ�Z7��h�`�@&i ��i��MKB�P��r���-�B|ϛ=3Yٶ ��
и поле будет выглядеть примерно так
-----------------------------17901701330412
Content-Disposition: form-data; name="parent"
clientphotos
Синтаксический анализ поля прост, получение содержимого изображения легко, но затем сохранить его в базе данных, чтобы я мог прочитать его обратно как изображение, не так просто.
Я пытался byte[] data = Encoding.UTF8.GetBytes(rawdata);
, но вывод неправильный.
У кого-нибудь есть идеи, как взять содержимое изображения и сохранить его в byte[]
в порядке?
UPDATE
Первая строка - получение изображения из context.Request.Files[name].InputStream.Read(data, 0, fs);
Вторая строка использует Encoding.UTF8.GetBytes(rawdata);
Третья строка использует Encoding.ASCII.GetBytes(rawdata);
Очевидно, что первая строка верна и работает.
Пока я просто использую первую строку, чтобы получить результат, и он, вероятно, останется таким, если кто-то не научит меня читать его из входного потока.
UPDATE
Нашел хорошее место, чтобы поделиться кодом Исходный код Проблема в строке 49, которая пока просто читает Request.Files