Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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]

У меня шлет
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
       )

)


 
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.49 MB
Время: 0.064 c
2-1169556713
sergeyst
2007-01-23 15:51
2007.02.11
освобождение ресурсов


15-1168986319
Tirael
2007-01-17 01:25
2007.02.11
нейросети


15-1169340589
IMHO
2007-01-21 03:49
2007.02.11
Модель распространения ПО


15-1169294773
Vovan #2
2007-01-20 15:06
2007.02.11
Большой EXE


15-1169220841
Ricks
2007-01-19 18:34
2007.02.11
Уровень образования