TFPHttpServer и удаление временных файлов

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

Ответить
vk_barnaul
незнакомец
Сообщения: 8
Зарегистрирован: 19.09.2015 03:48:21

TFPHttpServer и удаление временных файлов

Сообщение vk_barnaul »

Использую TFPHttpServer.
Потребовалось принимать файлы от пользователей.
Вопросов нет - пример есть в fpcsrc\packages\fcl-web\examples\fptemplate\fileupload\webmodule\webmodule.pas
Принимаю, делаю что хочу без проблем.
Сервер при обработке post запроса от клиента прекрасно все "раскладывает" на файлики и создает их в temp директории.
В примере показано как до них добраться и СКОПИРОВАТЬ.
При окончании обработки сервер за собой не убирает эти временные файлы.
Нигде про это ни слова не сказано.
Так же они останутся если поступит некоторый запрос, который я хочу "проигнорировать".
Более того даже существует пусть protect, но живой и рабочий метод у соответствующих классов - DeleteTempUploadedFiles.
Но вот только его никто не вызывает.
Теперь вопрос - где я не правильно понял идеологию пакета fcl-web?
Логично бы было при освобождении этих классов убирать за собой и временные файлы :)
grot
новенький
Сообщения: 82
Зарегистрирован: 13.02.2010 15:33:03

Сообщение grot »

vk_barnaul писал(а): Теперь вопрос - где я не правильно понял идеологию пакета fcl-web?
Идеология OSS простая - тебе дали исходники? дальше - "Сделай сам!"
DedFrend
постоялец
Сообщения: 157
Зарегистрирован: 25.11.2018 11:21:50

Сообщение DedFrend »

А что тогда делать тем, что захочет снова с ними поработать?
vk_barnaul
незнакомец
Сообщения: 8
Зарегистрирован: 19.09.2015 03:48:21

Сообщение vk_barnaul »

я использую следующий костыль:
...
type TMyRequest = Class(TFPHTTPConnectionRequest);

в конце обработки события OnRequest
вызываю TMyRequest(ARequest).DeleteTempUploadedFiles;

Еще из недокументированного - чтобы изменить temp директорию для этих самых upload файлов надо изменить class const
TRequest.DefaultRequestUploadDir := 'МОЯ СУПЕР ПАПКА ДЛЯ ВХОДЯЩИХ ФАЙЛОВ';

P.S. По поводу идеологии - я не питаю иллюзий что за меня должны были все сделать "красиво". Основной вопрос был именно в возможном "недопонимании организационной структуры".
sts
энтузиаст
Сообщения: 519
Зарегистрирован: 04.04.2008 12:15:44
Откуда: Тольятти

Сообщение sts »

по хорошему чистить временные файлы должна служба операционной системы после завершения программ, ведь файл может быть открыт другой программой, (мем) нельзя просто так удалить временные файлы
Аватара пользователя
Максим
энтузиаст
Сообщения: 599
Зарегистрирован: 27.07.2007 01:51:43
Откуда: Москва

Сообщение Максим »

Я бы предложил написать в багтрекер FPC.
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3067
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

Сообщение Снег Север »

Максим писал(а):Я бы предложил написать в багтрекер FPC.
Тут нет бага. Есть хотелки пользователя, которые он должен удовлетворять сам.
Аватара пользователя
Sharfik
энтузиаст
Сообщения: 836
Зарегистрирован: 20.07.2013 01:04:30

Сообщение Sharfik »

sts писал(а):по хорошему чистить временные файлы должна служба операционной системы после завершения программ, ведь файл может быть открыт другой программой, (мем) нельзя просто так удалить временные файлы
После завершения? Сервер может год работать без остановки. Место кто под это выделит? Тут просто вести список принятых и обработанных файлов надо, с таймаутом. Если есть отметка что принятый файл обработан, то удаляем, если таймаут на обработку прошел, то так же удаляем.
sts
энтузиаст
Сообщения: 519
Зарегистрирован: 04.04.2008 12:15:44
Откуда: Тольятти

Сообщение sts »

Sharfik писал(а):После завершения? Сервер может год работать без остановки. Место кто под это выделит?
судя по тому что пишет тс, он ожидает что будут удалятся после закрытия программы.
тут базовая реализация компонента веб сервера, естественно разработчик программы в которой он используется сам решает когда должны удалятся временные файлы.
по хорошему базовый компонент вообще не должен создавать файлы, у него должно быть свойство, типа хранилище файлов с соответствующим апи, а программист реализует его так как он считает нужным, и пример реализации.
vk_barnaul
незнакомец
Сообщения: 8
Зарегистрирован: 19.09.2015 03:48:21

Сообщение vk_barnaul »

sts писал(а):судя по тому что пишет тс, он ожидает что будут удалятся после закрытия программы.
я хотел, чтобы создание файлов во временной директории было как минимум документировано.

для себя я реализовал удаление по закрытию сокета.
sts
энтузиаст
Сообщения: 519
Зарегистрирован: 04.04.2008 12:15:44
Откуда: Тольятти

Сообщение sts »

vk_barnaul писал(а):я хотел, чтобы создание файлов во временной директории было как минимум документировано.
в мире паскаля както сложилось что исходники и являются документацией, когда исходников нет то да есть хелп с описанием.

Добавлено спустя 2 минуты 17 секунд:
последние 20 лет мода на чтото аля jаvadoc, в итоге совершенно идиотская документация типа getItem - получить элемент, это и так понятно

Добавлено спустя 14 минут 8 секунд:
кстати доку я чтото не нашел, вы надеюсь не считаете ту страничку на вики докой.
Ответить