Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

TIdMultiPartFormDataStream AddFile проблема ! [D7, WinXP]


vedm ©   (2006-09-09 10:11:00) 

Здраствуйте!
Передаю файл на сервер методом пост:

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 23:08:00) [1]


> как видим вместо папки C:\Тест\Text Document.htm  имеем
> C:\....\Text Document.htm

В исходнике Indy 9 не нашел такого действия.Отсюда делаю вывод что ты сам довабляешь AddFile('fl1', 'C':\....\Text Document.htm', '')
ищи ошибки в коде


Dmitrij_K   (2006-09-09 23:03:00) [2]

я даже не знаю
в моем простом примере имя файла передается полностью

> Орион ©   (09.09.06 18:05) [6]
> значит дело в серваке.

мне тоже так кажется


vedm   (2006-09-09 21:59:00) [3]

дело в том, что при заливке через форму через браузер все прекрасно работает с любыми файлами


Орион   (2006-09-09 18:05:00) [4]

значит дело в серваке.


Dmitrij_K   (2006-09-09 16:47:00) [5]

тут исход http://slil.ru/23102233


Dmitrij_K   (2006-09-09 16:46:00) [6]

У меня шлет
send

POST /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
       )

)


vedm   (2006-09-09 16:24:00) [7]

наврал наврал ^_^

ПОСЫЛАЕМ ФАЙЛ С РУССКИМИ БУКВАМИ:

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
после такого запроса нас кидают на ошибку ... хотя тело файла передается ... хм хз.


vedm   (2006-09-09 16:17:00) [8]

проверял след образом. пробовал файл расположенный в 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>.... далее хтмлка с ошибкой

как видим само тело файла по каким то причинам не отсылается :(((


Dmitrij_K   (2006-09-09 11:03:00) [9]


> когда же есть русский, то файл не передается на сервер.

С чего такая уверенность? Как проверял?


Наверх

Титульная страница Поиск, карта сайта Написать письмо