powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / IdHTTP.Put зависает на больших файлах
4 сообщений из 4, страница 1 из 1
IdHTTP.Put зависает на больших файлах
    #39724436
m52
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте,

Delphi XE8, Indy версия та, что идет с Delphi.

При передачи файла с ПК на сервер с помощью IdHTTP.Put сначала идет всё хорошо, прогресс-бар движется, но когда шкала доходит до 100%, обработчик IdHTTP.OnWork больше не срабатывает, шкала висит еще минут 7, после чего файл появляется на сервере (видимо уже скопировался и через браузер я его запросто могу скачать), но программа упорно продолжает показывать шкалу 100% и не реагирует на нажатия (висит). И так продолжается до бесконечности, не отпускает. При этом IdHTTP.OnWork не срабатывает.

Вопрос : Почему такое поведение и как исправить?

Тестировал на файле 14 ГБ - проблема есть
Тестировал на файле 6,84 ГБ - проблема есть
Тестировал на файле 1,1 ГБ - проблемы нет, как только файл скопировался, программа выдала результат.
Тестировал на файле 2,71 ГБ - проблемы нет, как только файл скопировался, программа выдала результат.

Вот краткий код:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
  // Открываем на чтение файл
  FS:=TFileStream.Create(LocalFilePath, fmOpenRead);
  FS.Seek(0, soBeginning);

  IdHTTP.OnWork:=MyProgressProc;
  IdHTTP.Request.CustomHeaders.Clear;
  IdHTTP.Response.Clear;
  IdHTTP.Put(href, FS);
  ..
...
Рейтинг: 0 / 0
IdHTTP.Put зависает на больших файлах
    #39724799
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подозреваю переполнение. Проверить на файлах размером High(Int)+1, High(UInt)+1
...
Рейтинг: 0 / 0
IdHTTP.Put зависает на больших файлах
    #39724867
m52
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я тоже подозреваю про переполнение.

High(Integer) = 2147483647, здесь вряд ли переполнение, т.к. писал ранее, что на файле размером 2,71 ГБ - проблемы нет, значит при размере 2,147 ГБ тоже проблемы не будет.

High(UInt) = 4294967295 - а вот здесь возможно упирается в ограничение, т.к. я писал, что на 6,84 ГБ - проблема есть.

Вообщем, проверю.
...
Рейтинг: 0 / 0
IdHTTP.Put зависает на больших файлах
    #39724953
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m52,

У FileStream Size типа int64, так что врядли переполнение. А вот как оно с памятью работает - вопрос. Посмотри, нет ли там затаскивания всего что можно в память?
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / IdHTTP.Put зависает на больших файлах
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]