Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Upload-Problem (ISAPI, TWebModul, POST) (https://www.delphipraxis.net/183560-upload-problem-isapi-twebmodul-post.html)

christophspaeth 20. Jan 2015 09:35

Upload-Problem (ISAPI, TWebModul, POST)
 
Hallo,
ich möchte bei einem älteren Webprojekt (TWebModule; ISAPI-Modul via mod_ISAPI in Apache 2.4 geladen) einen Dateiupload einbauen. Wegen div. Abhängigkeiten ist dieses Projekt noch auf Delphi 2006.

So lange nur eine kleine Datei hochgeladen wird, funktioniert das auch. Wenn eine Datei von einem knappen MB hochgeladen wird, hat TWebRequest.Content nur ca. 48k - ist ja auch so in der Dokumentation angegeben. Wenn ich jetzt aber einen Buffer reserviere und versuche mit ReadClient(...) den Rest zu lesen, bekomme ich 0 zurück, also nichts gelesen.
Delphi-Quellcode:
var
  buff:AnsiString;
  remBytes: Integer;
  ...
begin
  ...
  remBytes := request.ContentLength - length(request.content); // remBytes hat in meinem Versuch noch gut 800k
  setLength(buff, remBytes);
  bytesRead := request.ReadClient(buff[1], remBytes); // liefert 0 zurück
  ...
In ziemlich alten Posts (2003, 2004), die sich aber noch auf Apache 1.3 beziehen habe ich von einer 48k-Grenze gelesen, aber keine aktuellen Info dazu gefunden.

Den ISAPIReadAheadBuffer im Apache möchte ich eigentlich nur ungern erhöhen.

Gibt es da bekannte Probleme bzw. hat noch jemand einen Tipp was ich ausprobieren könnte?

Danke!

Sherlock 20. Jan 2015 09:51

AW: Upload-Problem (ISAPI, TWebModul, POST)
 
Ist denn im apache der Upload von größeren Datein erlaubt? Ich habe gerade keinnen zur Hand, aber da gab es doch die eine oder andere Stelle in der httpd.conf wo Upload_maximum_filesize oder auch memory_limit(der Upload ist ja im gewissen Umfang auch zunächst im Arbeitsspeicher) angepasst werden können/müssen.

Sherlock

christophspaeth 20. Jan 2015 11:00

AW: Upload-Problem (ISAPI, TWebModul, POST)
 
Hallo Sherlock,

danke für deien Antwort.
Ich habe gerade nochmal nachgesehen: In der httpd.conf (und den daraus referenziertern config-Dateien) habe ich keine Größenangabe gefundenm die anscheiend dafür zuständige Direktive LimitRequestBody (default: 0 = unbegrenzt) habe ich nicht in meiner Config gefunden. Im Internet bin ich auch nur auf Beiträge zu php gestoßen und dass man die max. Upload- bzw. Postsize in der php.ini anpassen kann/muss - kein Verweis auf irgendeine Apache-Einstellung.

Chris

Edit: Mit einem frischen Testprojekt klappt es natürlich auf der gleichen Apache-Installation... - an der RewriteRule liegt es also schonmal nicht...

Sherlock 20. Jan 2015 11:14

AW: Upload-Problem (ISAPI, TWebModul, POST)
 
Ah, verdammt...php. Ja, sorry.
Dann kann ich Dir nur viel Glück wünschen und bin leider raus.

Sherlock

christophspaeth 20. Jan 2015 16:49

AW: Upload-Problem (ISAPI, TWebModul, POST)
 
Es sieht so aus, als wäre ein vorhergehender Zugriff auf Request.ContentFields dafür verantwortlich gewesen, dass das ReadClient nicht mehr funktioniert hatte... :wall:

Nachdem der nur für ein erweitertes Tracing verwendet wurde, habe ich den natürlich auch nicth hier in den Beispielcode gepackt.
Auch wenn das ein recht spezieller Fehler ist: Vielleicht hilft der Post ja trotzdem jemandem nicht genauso lange wie ich nach dem Problem suchen zu müssen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:56 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz