Danke für eure Hilfe.
ich habe jetzt noch mal eine ganz neues Projekt aufgesetzt (als Standalone), ReqMulti hinzugefügt, und der Fileupload funktioniert schon mal. Insofern muss ich wohl suchen, warum das in der eignetlichen Anwendung nicht der Fall ist.
Zwei Fragen habe ich aber noch.
1. Jetzt Frage ich ab, ob Request.Files.Count>0 , um festzustellen ob es eine Multipart-Response ist. Gibt es dafür noch einen eleganteren Weg, oder ist das schon die einige Methode?
2. Solange als Method="post" übertragen wird, kann ich zwar die Files abfragen, aber meine QueryFields sind immer leer (obwohl ich alle Parameter im Content finden kann). Erst wenn ich als Method Get verwende, wird QueryFields auch gefüllt.
Es wäre aber schon gut, wenn ich im Post auch die anderen Felder, die das Web-Formular mit überträgt (und sie sind doch im Content enthalten), auch auslesen könnte. Ich könnte mir zwar einen eigenen Parser schreiben, aber sollte das nicht
direkt funktionieren?
Hier mal die Action im Webmodule:
Delphi-Quellcode:
procedure TWebModule1.WebModule1DefaultHandlerAction(Sender: TObject;
Request: TWebRequest; Response: TWebResponse;
var Handled: Boolean);
var
datatype:
string;
content:
string;
begin
Response.Content :=
'
<html>' +
'
<head><title>Webserver-Anwendung</title></head>' +
'
<body>Webserver-Anwendung</body>' +
'
</html>';
if Request.Files.Count > 0
then
begin
with TFileStream.Create('
C:\OrderApp\' + Request.Files[0].FileName, fmCreate)
do
try
CopyFrom(Request.Files[0].Stream, Request.Files[0].Stream.Size);
finally
Free;
end;
end;
with TStreamWriter.Create(TFileStream.Create('
C:\OrderApp\Query.txt', fmCreate), TEncoding.UTF8)
do
try
content:=Request.Content;
datatype:=Request.QueryFields.Values['
DataType'];
Write(datatype);
Write(content);
Flush;
Close;
finally
BaseStream.Free;
Free();
end;
end;
Und hier mal die
html-seite mit der ich testweise den Upload mache:
Code:
<
html>
<head>
<meta charset="utf8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<form id="myForm" action="http://
localhost:8443/senddata.php" method="post" enctype="multipart/form-data">
<input type="text" name="DataType" value="fileupload">
<input type="file" size="120" name="myfile">
<input type="text" size="20" name="mimetype" value="image/bmp">
<input type="submit" value="upload">
</form>
</body>
</
html>