Мне необходимо закачать бинарный файл на сервер из своей программы через HTTP...(FTP не подходит)
Использую WinInet. делаю Post запрос.
На сервере работает Perl скрипт, который считывает данные и сохраняет в файл.
Дело в том, что размер файла после закачки не совпадает с размером исходного файла.
Как этого избежать?
ЗАРАНЕЕ СПАСИБО
28.08.03 10:09: Перенесено модератором из 'C/C++' — ПК
Здравствуйте, bigm, Вы писали:
B>Мне необходимо закачать бинарный файл на сервер из своей программы через HTTP...(FTP не подходит)
B>Использую WinInet. делаю Post запрос.
B>На сервере работает Perl скрипт, который считывает данные и сохраняет в файл.
B>Дело в том, что размер файла после закачки не совпадает с размером исходного файла.
B>Как этого избежать?
B>ЗАРАНЕЕ СПАСИБО
Дай угадаю — он становится меньше?

Проверь, правильно ли ты качаешь файл на сервер. Сервер может менять концы строк в коде запроса. Если в запросе спрятан передаваемый файл, то и, соответственно, в нём. Скрипт должен принимать информацию специфическим образом:
use CGI;
use Fcntl;
use CGI qw (:standard);
use CGI::Carp qw (fatalsToBrowser);
$CGI::POST_MAX = 131072;
if ($ENV{'CONTENT_TYPE'} =~ m#^multipart/form-data#) {
@fields = ('file', 'text');
foreach $field (@fields)
{ $in{$field} = param($field);}
}
$file=param('file');
$file !~ /([\w-]+ \. (?: gif | jpe?g ))$/ix;
open OUT, ("> _pic/$1") or print "Файл не может быть открыт";
binmode(OUT);
# читаем входной поток и пишем в файл (файл в binmode!!!)
while(<$file>){
print OUT $_;
}
close(OUT);
exit;
Причём данные должны передаваться в формате enctype="multipart/form-data"