Вверх ↑
Этот топик читают: Гость
Ответов: 6
Рейтинг: 1
#1: 2013-10-30 19:04:50 ЛС | профиль | цитата
Добрый день!
Помогите пожалуйста разобраться с работой компонента HTTP_Get при использовании метода post.
(HTTP_Get используется по причине необходимости отправлять/получать данные через прокси).
Вот код веб страницы + php скрипт
index.html

<html>
<head>
<meta charset="utf-8">
<title>Uploader</title>
</head>
<body>
<form action = "up.php" method = "post" enctype = 'multipart/form-data'>
<input type = "file" name = "filename" />
<input type = "submit" value = "upload" />
</form>
</body>
</htnl>


up.php

<?php
$blacklist = array(".php", ".phtml", ".php3", ".php4", ".html", ".htm");
foreach ($blacklist as $item)
if(preg_match("/$item\$/i", $_FILES['filename']['name'])) exit;
$size = $_FILES['filename']['size'];
if ($size > 5242880) exit;
$uploadfile = "uploads/".$_FILES['filename']['name'];
move_uploaded_file($_FILES['filename']['tmp_name'], $uploadfile);
?>


При загрузке файла через веб форму все ок.
Снифером вытянул это:

POST http://victory.id1945.com/up.php HTTP/1.1
Host: victory.id1945.com
User-Agent: Mozilla/5.0 (Windows NT 5.2; rv:24.0) Gecko/20100101 Firefox/24.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://victory.id1945.com/
Connection: keep-alive
Content-Type: multipart/form-data; boundary=---------------------------208692939816256
Content-Length: 214

-----------------------------208692939816256
Content-Disposition: form-data; name="filename"; filename="test.txt"
Content-Type: text/plain

Test
Try to upload.
-----------------------------208692939816256--


При попытке запостить программой тоже самое файл на веб сервер не копируется.

code_32210.txt
карма: 0

0
файлы: 1code_32210.txt [1.2KB] [114]
Гость
Ответов: 17029
Рейтинг: 0
#2: 2013-10-30 21:17:45 правка | ЛС | профиль | цитата


Редактировалось 1 раз(а), последний 2025-01-17 15:11:19
карма: 0

0
Гость
Ответов: 17029
Рейтинг: 0
#3: 2013-10-30 21:18:22 правка | ЛС | профиль | цитата


Редактировалось 1 раз(а), последний 2025-01-17 15:11:19
карма: 0

0
Ответов: 6
Рейтинг: 1
#4: 2013-10-31 15:16:53 ЛС | профиль | цитата
128-70-156-202.broadband. писал(а):
Дык этот компонент предназначен для скачки файлов если не ошибаюсь

Вы ошибаетесь...В первую очередь это отправка запроса серверу, а уж потом получение ответа.
128-70-156-202.broadband. писал(а):
Тебе нужен HTTP_FileUpload для закачки файлов на сервер

Данный компонент не работает при использованиии прокси

В общем я уже понял в чем проблема когда просмотрел код компонента...HTTP_Get формирует POST запрос другого содержания, а именно работает с иным контентом - 'Content-Type: application/x-www-form-urlencoded', а необходимо - 'Content-Type: multipart/form-data'

В общем необходимо переделывать компонент пол себя...
карма: 0

0
Гость
Ответов: 17029
Рейтинг: 0
#5: 2013-10-31 16:01:36 правка | ЛС | профиль | цитата


Редактировалось 1 раз(а), последний 2025-01-17 15:11:19
карма: 0

0
Ответов: 6
Рейтинг: 1
#6: 2013-10-31 16:28:51 ЛС | профиль | цитата
host-109-235-189-9.bisv.r писал(а):
Сформируй POST запрос через FormatStr


Так проблемп не с формированием запроса а с его отправкой посредством HTTP_Get методом post.


карма: 0

0
Гость
Ответов: 17029
Рейтинг: 0
#7: 2013-10-31 16:35:03 правка | ЛС | профиль | цитата


Редактировалось 1 раз(а), последний 2025-01-17 15:11:20
карма: 0

0
Гость
Ответов: 17029
Рейтинг: 0
#8: 2013-10-31 16:35:30 правка | ЛС | профиль | цитата


Редактировалось 1 раз(а), последний 2025-01-17 15:11:20
карма: 0

0
Гость
Ответов: 17029
Рейтинг: 0
#9: 2013-10-31 16:51:05 правка | ЛС | профиль | цитата


Редактировалось 1 раз(а), последний 2025-01-17 15:11:20
карма: 0

0
Ответов: 6
Рейтинг: 1
#10: 2013-10-31 18:05:24 ЛС | профиль | цитата
А что у Вас TCP Client работает через прокси? У меня к сожалению нет.
Аналогично у меня и компонент Host не резолвит через прокси.
Так что я целенаправленно выбрал под свою задачу именно HTTP_Get так как он с работой через прокси справляется на ура. Да и POST он отрабатывает, да только не тот что мне нужен. Пробую допилить.


карма: 0

0
Ответов: 4671
Рейтинг: 768
#11: 2013-10-31 18:42:15 ЛС | профиль | цитата
Если прокси - HTTP без авторизации, запрос шлется на IP прокси, при этом заголовок Host должен указывать на нужный сайт. Если прокси требует авторизации, кажется, можно просто сформировать и добавить заголовок Proxy-Authorization и все должно работать.
Вот пример загрузки файла без прокси: http://svn.hiasm.com/packs/delphi/Example/Internet/Upload_File_on_Server.sha
Для прокси без авторизации в TCP_Client поставить IP прокси, а в HTTP_FileUpload.Host прописать адрес сайта.
карма: 26

1
Голосовали:Reload
Ответов: 6
Рейтинг: 1
#12: 2013-10-31 18:48:07 ЛС | профиль | цитата
Netspirit писал(а):
TCP_Client поставить IP прокси, а в HTTP_FileUpload.Host прописать адрес сайта.


Огромное спасибо, не знал. Буду пробовать.


UPD Все ок, еще раз спасибо
карма: 0

0
Гость
Ответов: 17029
Рейтинг: 0
#13: 2013-10-31 23:10:40 правка | ЛС | профиль | цитата


Редактировалось 1 раз(а), последний 2025-01-17 15:11:20
карма: 0

0
Ответов: 6
Рейтинг: 1
#14: 2013-11-01 13:59:11 ЛС | профиль | цитата
77.106.248.176 писал(а):
Итоговый вариант покажи хоть

code_32229.txt


карма: 0

0
файлы: 1code_32229.txt [2.2KB] [156]
Гость
Ответов: 17029
Рейтинг: 0
#15: 2013-11-11 11:20:52 правка | ЛС | профиль | цитата


Редактировалось 1 раз(а), последний 2025-01-17 15:11:20
карма: 0

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)