Текущий архив: 2007.02.11;
Скачать: CL | DM;
ВнизTIdMultiPartFormDataStream AddFile проблема ! Найти похожие ветки
← →
vedm (2006-09-09 10:11) [0]Здраствуйте!
Передаю файл на сервер методом пост:
filename := "C:\Тест\file.rar";
...
data.AddFile("file",filename,"FILE"); // multipart/form-data тоже пробовал
...
retr := IdHTTP1.Post("http://server.ru/post.php",data)
...
Но возникает такая проблема. Все прекрасно передается только тогда, когда в filename (пути к файлу) отсутствуют русский символы (например filename := "C:\Temp\file.rar"; ) , когда же есть русский, то файл не передается на сервер.
Подскажите как быть.
← →
Dmitrij_K (2006-09-09 11:03) [1]
> когда же есть русский, то файл не передается на сервер.
С чего такая уверенность? Как проверял?
← →
vedm (2006-09-09 16:17) [2]проверял след образом. пробовал файл расположенный в C:\Temp\file.rar - все прекрасно залилось, пробую файл C:\Тест\файл.rar , скрипт сервера отвечает ошибкой - "возможно файл не был передан".
снифер выдает следуещее при пути без русских символов:
send
POST /cgi/upload.cgi.php?426e2d25508a6593b69b80f2dc574a1e HTTP/1.0
Connection: keep-alive
Content-Type: multipart/form-data; boundary=--------090906160936125
Content-Length: 13912
Host: server.ru
Accept: text/html, */*
Accept-Charset: windows-1251
Accept-Encoding: windows-1251
Referer: http://server.ru
User-Agent: Mozilla/3.0 (compatible; Indy Library)
Cookie: sid=426e2d25508a6593b69b80f2dc574a1
send
----------090906160936125
Content-Disposition: form-data; name="fl1"; filename="C:\Text Document.htm"
Content-Type: FILE
<тут содержание файла>............ .........
recv
HTTP/1.1 302 Found.. ( далее нас редиректят и говорят все ок ! )
теперь пробуем закачать с русскими символами:
send
GET / HTTP/1.1
Connection: keep-alive
Content-Type: multipart/form-data; boundary=--------090906160936125
Host: rapidshare.ru
Accept: text/html, */*
Accept-Charset: windows-1251
Accept-Encoding: windows-1251
Referer: http://server.ru
User-Agent: Mozilla/3.0 (compatible; Indy Library)
recv
HTTP/1.1 200 OK
Date: Sat, 09 Sep 2006 12:14:32 GMT
Server: Apache
Set-Cookie: sid=56f2c50eb1a2b431790caf1b6114adf5; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: sid=f5e5475fc79e59fb4ed187c7828b79fa; path=/
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8
20cb..<html>.<head>.... далее хтмлка с ошибкой
как видим само тело файла по каким то причинам не отсылается :(((
← →
vedm (2006-09-09 16:24) [3]наврал наврал ^_^
ПОСЫЛАЕМ ФАЙЛ С РУССКИМИ БУКВАМИ:
POST /cgi/upload.cgi.php?0d39ef766c062482817c76cbf6a7d841 HTTP/1.0
Connection: keep-alive
Content-Type: multipart/form-data; boundary=--------090906162053875
Content-Length: 13917
Host: server.ru
Accept: text/html, */*
Accept-Charset: windows-1251
Accept-Encoding: windows-1251
Referer: http://server.ru
User-Agent: Mozilla/3.0 (compatible; Indy Library)
Cookie: sid=0d39ef766c062482817c76cbf6a7d841
----------090906162053875
Content-Disposition: form-data; name="fl1"; filename="C:\....\Text Document.htm"
Content-Type: FILE
<html>..<head>..тут пошло содержание файла
как видим вместо папки C:\Тест\Text Document.htm имеем C:\....\Text Document.htm
после такого запроса нас кидают на ошибку ... хотя тело файла передается ... хм хз.
← →
Dmitrij_K (2006-09-09 16:46) [4]У меня шлет
sendPOST /test.php HTTP/1.0
Connection: keep-alive
Content-Type: multipart/form-data; boundary=--------090906164501703
Content-Length: 1080
Host: 127.0.0.1
Accept: text/html, */*
User-Agent: Mozilla/3.0 (compatible; Indy Library)
----------090906164501703
Content-Disposition: form-data; name="file1"; filename="C:\Тест\Text Document.htm"
Content-Type: text/html
Content-Transfer-Encoding: binary
тут данные
----------090906164501703--
ответ php скриптаHTTP/1.1 200 OK
Date: Sat, 09 Sep 2006 12:45:02 GMT
Server: Apache/1.3.33 (Win32) PHP/5.0.5
X-Powered-By: PHP/5.0.5
Connection: close
Content-Type: text/plain
Array
(
[file1] => Array
(
[name] => Text Document.htm
[type] => text/html
[tmp_name] => C:\WINDOWS\TEMP\php750.tmp
[error] => 0
[size] => 876
)
)
← →
Dmitrij_K (2006-09-09 16:47) [5]тут исход http://slil.ru/23102233
← →
Орион © (2006-09-09 18:05) [6]значит дело в серваке.
← →
vedm (2006-09-09 21:59) [7]дело в том, что при заливке через форму через браузер все прекрасно работает с любыми файлами
← →
Dmitrij_K (2006-09-09 23:03) [8]я даже не знаю
в моем простом примере имя файла передается полностью
> Орион © (09.09.06 18:05) [6]
> значит дело в серваке.
мне тоже так кажется
← →
Dmitrij_K (2006-09-09 23:08) [9]
> как видим вместо папки C:\Тест\Text Document.htm имеем
> C:\....\Text Document.htm
В исходнике Indy 9 не нашел такого действия.Отсюда делаю вывод что ты сам довабляешьAddFile("fl1", "C":\....\Text Document.htm", "")
ищи ошибки в коде
Страницы: 1 вся ветка
Текущий архив: 2007.02.11;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.047 c