【发布时间】:2014-10-13 20:40:15
【问题描述】:
在我的 VCL 应用程序中,我有一个 http 服务器。我正在尝试从浏览器上传图像。下面是 commandGet 过程的代码:
procedure TForm6.HTTPServerCommandGet(AContext: TIdContext;
ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
var
imageStream: TMemoryStream;
begin
if Pos('command=addImage', ARequestInfo.UnparsedParams) > 0 then
begin
AResponseInfo.ContentText := UploadImageForm;
end
else if Pos('command=saveImage', ARequestInfo.UnparsedParams) > 0 then
begin
imageStream := TMemoryStream.Create;
try
ARequestInfo.PostStream.Seek(0, soFromBeginning);
imageStream.LoadFromStream(ARequestInfo.PostStream);
imageStream.SaveToFile('picture.jpeg');
finally
imageStream.Free;
end;
end;
end;
UploadImageForm的代码如下:
function UploadImageForm: string;
var
uploadImageHTMLForm: TStringBuilder;
begin
uploadImageHTMLForm := TStringBuilder.Create;
try
// by default enctype is application/x-www-form-urlencoded
// uploadImageHTMLForm.AppendLine('<form action="/?command=saveImage" method="post">');
// EDIT
uploadImageHTMLForm.AppendLine('<form action="/?command=saveImage" method="post" enctype="multipart/form-data">');
uploadImageHTMLForm.AppendLine('<input type="file" name="uploadField">');
uploadImageHTMLForm.AppendLine('<input type="submit">');
uploadImageHTMLForm.AppendLine('</form>');
Result := uploadImageHTMLForm.ToString;
finally
uploadImageHTMLForm.Free;
end;
end;
问题是,当我选择一个 .jpeg 文件并单击提交时,ARequestInfo.PostStream 为空(我在 CreatePostStream 上创建它)。知道如何解决它。
【问题讨论】:
标签: delphi file-upload httpserver forms http-post