В общем написал я такую "образину" для получения размера файла, которая работает и сетью (http/https) и с локальными фалами. И все бы хорошо но "сетевой вариант" работает крайне медленно (для сравнительно небольших файлов почти нет разницы между полной загрузкой и запросом размера что по идее полный нонсенс так как это что-то вроде пинга и реальные данные не загружаются от слова совсем )
- Код: Выделить всё
Function getFileSize( FPath:String):Int64;
var
sr: TSearchRec;
S: string;
HTTPClient : TFPHttpClient;
ST:TStringList;
begin
Result := -1;
If pos('http',FPath)=1 then begin
HTTPClient := TFPHttpClient.Create(nil);
ST:=TStringList.Create;
try
HTTPClient.Head(FPath,ST);
except
HTTPClient.Free;
St.Free;
exit;
end;
if HTTPClient.ResponseStatusText='' then begin
S:= HTTPClient.GetHeader(ST,'Content-Length');
If S<>'' then Result := S.ToInt64;
end;
HTTPClient.Free;
St.Free;
end else
begin
try
if FindFirst(FPath , faAnyFile, sr) = 0 then
begin
Result := Sr.Size;
end
finally
FindClose(sr);
end
end
end;