![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Здравствуйте. Пишу программу для загрузки на файлообменники с использованием idHTTP. Создал класс поток в котором происходит загрузка файла на сервер. В каждом отдельном потоке отдельный объект IDhttp.
Работа самого класса не вызывает сложностей. Вопрос следующий: когда я загружаю файл на сервер методом Post, все идет нормально, но после удаления idhttp и завершения потока данные в памяти остаются. Вот основной код Execute: Код:
FIdHTTP:=TIdHTTP.Create(nil); FIdHTTP.Request.UserAgent:='Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.6.30 Version/10.61'; FIdHTTP.Request.AcceptLanguage:='ru-RU,ru;q=0.9,en;q=0.8'; FIdHTTP.Request.CacheControl:='no-cache'; FIdHTTP.Request.ContentType:=''; FIdHTTP.HandleRedirects:=true; FOldURL:=''; FIdHTTP.RecvBufferSize:=32*1024; FIdHTTP.SendBufferSize:=32*1024; FIdHTTP.OnWork:=IdHTTP_Work; FIdHTTP.OnStatus:=IdHTTP1Status; FIdHTTP.OnRedirect:=IdHTTP1Redirect; depositfiles; if FMP<>nil then begin FMP.Free; FMP:=nil; end; if FIdHTTP<>nil then begin FIdHTTP.Disconnect; FIdHTTP.Free; FIdHTTP:=nil; end; while not (Terminated) do begin end; //--------------------------- procedure depositfiles(); var s,b: String; newFileName, Path : string; i : integer; begin Get('http://depositfiles.com/'); // -- авторизация // .... //----- s="данные веб-формы для загрузки"; Fmp := TidMultiPartFormDataStream.Create; Fmp.AddFormField('MAX_FILE_SIZE', '2097152000'); Fmp.AddFormField('UPLOAD_IDENTIFIER', GetSubStr(s, 'name="UPLOAD_IDENTIFIER" value="', '"')); Fmp.AddFormField('go', '1'); Fmp.AddFormField('agree', '1'); Fmp.AddFile('files', FFileName, 'multipart/form-data'); b := Post(GetSubStr(s, 'multipart/form-data" action="', '"'), Fmp); // дальше обрабатываю результат end; В результате после загрузки на сайт около 100 Мб, в памяти программы висит ~30 Мб сверх нормы. Кроме того волнует вопрос: как сделать чтобы idhttp потреблял меньше памяти в процессе загрузки. Если я захочу загрузить 1гб разом, то будет выделено много памяти в процессе загрузки Последний раз редактировалось Barlo, 24.11.2011 в 19:59. |