Использую объект Indy 10 IdHTTP для закачки файла с сервера. Естественно хотелось бы оформить этот животрепещущий процесс в виде формочки с ProgressBar и какими-нито информативными надписями, типа "Скачано 100 байт из 23456 байт".
Для получения информации о размере файла на сервере пользую следующий код:
Код: Выделить всё
Edit1.Text := Format('http://%s/%s%s', [HostEdit.Text, 'cgi-bin/doclibrary.cgi?', FileURLEdit.Text]);
IdHTTP.Head(Edit1.Text);
Label4.Caption := Format('%u', [IdHttp.Response.ContentLength]);
Memo1.Clear;
IdHttp.Response.RawHeaders.ConvertToStdValues(Memo1.Lines);
CheckBox1.Checked := IdHttp.Response.HasContentLength;
так вот, почему-то HasContentLength = False,
а Label4.Caption = '4294967295', что ничто иное как 4 * 1024 * 1024 * 1024 - 1...
поле Memo1 содержит текст:
Подскажите плиз, почему я не могу получить размер файла? Что я не так делаю?Server=Apache/1.3.31 (Unix) mod_perl/1.29 mod_ssl/2.8.19 OpenSSL/0.9.7d
Content-Disposition=attachment; filename=blablabla.doc
Content-Transfer-Encoding=binary;
Connection=close
Content-Type=application/force-download
Файл при этом удачно закачивается с помощью кода:
Код: Выделить всё
CurrentTask.FileStream := TFileStream.Create(FileName, fmCreate);
CurrentTask.URL := Edit1.Text;
IdHTTP.Get(CurrentTask.URL, CurrentTask.FileStream);
Хотя на Indy 9 было тоже самое...