Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Загрузка файла HTTP запросом

7.6K
29 января 2007 года
bmn
27 / / 01.08.2005
Добрый вечер!
Пишу программу, которая загружает файл на сервер.
Но столкнулся с проблемой.
Код:
string PostDataStr = "";
            string vHeaders = "";
            vHeaders += "Content-Type: multipart/form-data; boundary=---------------------------7d7213c140172" + "\r\n";
            string Cont = "\r\n";
           
            Cont += "-----------------------------7d735b1b140172" + "\r\n";
            Cont += "Content-Disposition: form-data; name=\"uploadFile1\"; filename=\"\"" + "\r\n";
            Cont += "Content-Type: application/octet-stream" + "\r\n";
            Cont += "" + "\r\n";
            Cont += "" + "\r\n";
            Cont += "-----------------------------7d735b1b140172" + "\r\n";
            Cont += "Content-Disposition: form-data; name=\"Submit\"" + "\r\n";
            Cont += "" + "\r\n";
            Cont += "Sub" + "\r\n";
            Cont += "-----------------------------7d735b1b140172--" + "\r\n";
            Cont += "\r\n";
            vHeaders += "Content-Length: " + Cont.Length + "\r\n";
            vHeaders += Cont;
            byte[] PostDataByte = Encoding.UTF8.GetBytes(PostDataStr);
            MessageBox.Show(vHeaders);
            //return;
            webBrowser1.Navigate("http://localhost/blah/blah.php", "", PostDataByte, vHeaders);


Файлы не загружает, на выходе говорит что отправленно GETом. возможно в этом проблема. подскажите как решить?
заранее благодарен.
355
30 января 2007 года
<SCORP>
786 / / 21.10.2006
скорее всего да. у GET запроса есть ограничение на длинну строки запроса. кажется 255 символов.
7.6K
31 января 2007 года
bmn
27 / / 01.08.2005
я тоже так подозреваю..
может быть подскажешь как решить?!
1.9K
31 января 2007 года
InterWen
331 / / 16.09.2006
[QUOTE=<SCORP>;170642]скорее всего да. у GET запроса есть ограничение на длинну строки запроса. кажется 255 символов.[/QUOTE]

Не, 255 - это вряд ли :) Я ГЕТом иогда такие "трактаты" отсылаю и ничего.
Реально там чего-то кажется 8кб то ли на ГЕТ запрос, то ли на передаваемый URL в целом. Хотя, могу и ошибаться.


bmn, да, все хорошо, но файлы ГЕТом не зальешь, это правда,
[COLOR="Gray"]извини, возможно помог бы, но мне уже пора выходить...[/COLOR]
355
31 января 2007 года
&lt;SCORP&gt;
786 / / 21.10.2006
выход -- отправлять POST'ом. ну или на крайний случай PUT'ом, если уверен что сервер поддерживает и этот метод разрешён
тем более, что ты сами данные в раздел ПОСТ данных запихиваеш. возможно сервер на них просто-напросто забивает, потому что при ГЕТ запросе их быть там не должно
7.6K
31 января 2007 года
bmn
27 / / 01.08.2005
Я в С ламер(
делаю что-то вроде:
Код:
string vHeaders = "";
            vHeaders += "Content-Type: multipart/form-data; boundary=---------------------------7d7213c140172" + "\r\n";
            string Cont = "";

            Cont += "-----------------------------7d735b1b140172" + "\r\n";
            Cont += "Content-Disposition: form-data; name=\"uploadFile1\"; filename=\"\"" + "\r\n";
            Cont += "Content-Type: application/octet-stream" + "\r\n";
            Cont += "" + "\r\n";
            Cont += "" + "\r\n";
            Cont += "-----------------------------7d735b1b140172" + "\r\n";
            Cont += "Content-Disposition: form-data; name=\"Submit\"" + "\r\n";
            Cont += "" + "\r\n";
            Cont += "Sub" + "\r\n";
            Cont += "-----------------------------7d735b1b140172--" + "\r\n";
            Cont += "\r\n";
            vHeaders += "Content-Length: "+Cont.Length+"\r\n";
            string PostDataStr = Cont;
            byte[] PostDataByte = Encoding.UTF8.GetBytes(PostDataStr);
            webBrowser1.Navigate("http://localhost/blah/blah.php", "", PostDataByte, vHeaders);

Запрос ПОСТом идет теперь, но все равно не передает файлы и остальные данные. Подскажит кто-нибудь в чём здесь дело то??
355
01 февраля 2007 года
&lt;SCORP&gt;
786 / / 21.10.2006
рекомендую подебажить серверные скрипты, которые всё это добро принимают
7.6K
03 февраля 2007 года
bmn
27 / / 01.08.2005
да очень простой скрипт..
 
Код:
<?
    echo "<PRE>".print_r ($_SERVER, true)."</PRE>";
    echo "<PRE>".print_r ($_GET, true)."</PRE>";
    echo "<PRE>".print_r ($_POST, true)."</PRE>";
    echo "<PRE>".print_r ($_FILES, true)."</PRE>";
?>
<form method="POST" enctype="multipart/form-data">
        <p> 1: <input type="file" size=25 name="uploadFile1" >
        <input type='submit' name="Submit" value="Sub">
        </form>

Может тогда кто-нибудь подскажет как "нажать" на input type="submit" из webBrowser'a?
355
03 февраля 2007 года
&lt;SCORP&gt;
786 / / 21.10.2006
вариант номер раз: левой кнопкой мыши :)
вариант номер два: form.submit()
приколы типа Submit.click() вряд ли будут работать
если это ActiveX браузера, то он может делать такие приколы: webBrowser.Navigate("java script:form.submit()")
7.6K
05 февраля 2007 года
bmn
27 / / 01.08.2005
<SCORP>, спасибо, помогло .
но с файлом никак не разберусь. в input file не подставишь так просто значение, не катит что-то типа
webBrowser.Document.Forms[0].GetElementByTagName ("input")[0].SetAttribute ("value", "C:\file.txt");
webBrowser.Navigate ("java script: document.forms[0].Submit();");

а с HTTP запросом лажа какая-то..
355
05 февраля 2007 года
&lt;SCORP&gt;
786 / / 21.10.2006
файл может выбрать только пользователь мышкой. это сделано из соображений безопасности, чтобы ты скриптом не смог загрузить на сервер без ведома пользователя произвольный файлы с его машины
7.6K
05 февраля 2007 года
bmn
27 / / 01.08.2005
ммм, остался только вариант с запросом..
странно, почему он не пашет..
273
11 февраля 2007 года
3A3-968M
1.2K / / 22.12.2005
Цитата: bmn
ммм, остался только вариант с запросом..
странно, почему он не пашет..


Делается в пару строчек. Нужно только подобрать нужный MIME-тип:
http://forum.codenet.ru/showthread.php?t=34651

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог