![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#16
|
|||
|
|||
![]() фу блин,разобрался.чтоб там небыло nil надо еще в событии
IdHTTPServer1OnCreatePostStream вписать VPostStream:=TMemoryStream.Create глупость какая,зачем создавать уже созданную в процедуре переменню??? |
#17
|
|||
|
|||
![]() по умолчанию Delphi (и Object Pascal) создает только объекты базовых типов - integer, string и так далее. Все остальное надо создавать (вызывать метод Create) вручную.
Цитата:
|
#18
|
||||
|
||||
![]() Цитата:
![]() В си, переменные описываются один раз, как и в Дельфи. Другой вопрос, что там их можно объявить и применить одновременно по ходу действия, а можно и точно также как в Дельфи. Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#19
|
|||
|
|||
![]() Цитата:
Цитата:
Никогда не мог понять этой логики =) |
#20
|
|||
|
|||
![]() опять прошу помощи.
вобщем если в событии IdHTTPServer1OnCreatePostStream создать VPostStream то файл заливается нормально. но в событии IdHTTPServer1CommandGet перестают считываться параметры. то есть они считываются,но все пустые. и тем самым я не могу узнать имя файла который принимается |
#21
|
|||
|
|||
![]() Решил делать немного по другому.не буду заморачиваться,вобщем сохранение происходит теперь так:
получаю от браузера в строковом виде все данные(имя файла,post запрос и тд),в том числе в строке приходит и сам файл в бинарном виде. с помощью boundary метки ищу позицию начала и конца бинарного кода файла в тексте,и сохраняю,но при таком сохранении очень много оперативной памяти тратится особенно если файл большой. весь файл вначале загружается в память,а с моим условием сохранения используемаяпамять увеличивается вдвое. Код:
//передаём в StringStream чтоб передать в MemoryStream для сохранения ass:=TStringStream.Create(Copy(ARequestInfo.FormParams,x,y-x)); //х,y - начало и конец бинарного файла в строке ARequestInfo.free;//освобожд. чтоб уменьшить расход памяти PostedFile := TMemoryStream.Create; PostedFile.LoadFromStream(ass);//передаём в MemoryStream для сохранения ass.Free; PostedFile.SaveToFile(flname);//сохраняем PostedFile.Free; и вообще,неужто idhttp такой ущербный,что нельзя файл во время приема в реальном времени сейвить на диск?? ну и Как проверить размер перед отправкой? ![]() Последний раз редактировалось Snake22, 13.03.2012 в 23:18. |
#22
|
||||
|
||||
![]() А что тебя не устраивает? Добавь только try-finally-end.:
Код:
PostedFile := TMemoryStream.Create; try ass := TStringStream.Create(Copy(ARequestInfo.FormParams,x,y-x)); //х,y - начало и конец бинарного файла в строке try ARequestInfo.free;//освобожд. чтоб уменьшить расход памяти PostedFile.LoadFromStream(ass);//передаём в MemoryStream для сохранения finally ass.Free; end; PostedFile.SaveToFile(flname);//сохраняем finally PostedFile.Free; end; Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#23
|
|||
|
|||
![]() Цитата:
Цитата:
Хочется вообще чтоб файл принимался и тутже сохранялся на жесткий диск,тем самым занимая каких-нить пару метров буфера между считыванием и сохранением |
#24
|
|||
|
|||
![]() Кто знает как проверить есть ли активные соединения на моем сервере?
ну,например ктото файл выкачивает. нужно проверить и тогда выдать запрос с подтверждением о разрыве свзяи |
#25
|
|||
|
|||
![]() Столкнулся еще с одной траблой.если сервер отдаёт комуто файл, то в это время второй клиент уже не может получить этот файл,типа файл уже используется.
файл отдаю так AResponseInfo.ContentStream:=TFileStream.Create( filename,fmOpenRead); вроде ж указано что fmOpenRead ,почему он блокируется? и также кстати если например mp3 файл открыт в плеере, то другими плеерами его в это же время можно слушать, а вот сервер пишет что файл уже используется и не хочет отправлять его. |
#26
|
||||
|
||||
![]() fmShareDenyWrite Other applications can open the file for reading but not for writing.
Пишу программы за еду. __________________ |
Этот пользователь сказал Спасибо NumLock за это полезное сообщение: | ||
Snake22 (22.04.2012)
|
#27
|
|||
|
|||
![]() NumLock,спасиобо помогло,тока fmShareDenyWrite не подошел а вот fmShareDenyNone то что надо
|