![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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]
> когда же есть русский, то файл не передается на сервер.
С чего такая уверенность? Как проверял?