【发布时间】:2013-11-14 09:44:43
【问题描述】:
我使用 Delphi 作为服务器来处理许多不同的请求。所有这些都是简单的字符串都可以正常工作,但我在接收文件时遇到了一些问题。
都是使用Webbroker服务实现的,所以我得到一个方法
WebModule1WebActionItem1Action(Sender: TObject; Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
我有一个 /test 方法,type=mtPost。
在动作内部,我执行以下操作:
MimeType := Request.ContentFields.Values['MimeType'];
for i := 0 to Request.Files.Count-1 do begin
// never entered
aFile := Request.Files.Items[i];
ms := TMemoryStream.Create;
aFile.Stream.Position := 0;
ms.CopyFrom(aFile.Stream, aFile.Stream.Size);
ms.SaveToFile(path+aFile.FileName);
ms.free;
end;
显然我发送的任何内容都不会被识别为文件,但我不知道为什么。 用于发布的 HTML 如下所示:
<form id="myForm" action="http://localhost:8080/test" method="post" enctype="multipart/form-data">
<input type="file" size="60" name="myfile">
<input type="text" size="10" name="mimetype" value="image/hest">
<input type="submit" value="upload">
</form>
我会感谢任何人告诉我可能出了什么问题 - 以及如何解决它。 基本上我当时只需要能够接收1个文件,包括mimetype(因为我需要在稍后提供文件时返回它)
【问题讨论】:
-
尝试使用 FileStream 而不是 MemoryStream
-
这不会有什么不同,因为我从来没有接触过那部分代码。我的问题是找出/获取文件,而不是存储它。
-
您好,您有有效的解决方案吗?
-
我们实际上最终使用了 Svip 建议的变体,我们自己解析多部分表单请求。 ReqMulti 没有按预期添加文件。
标签: delphi delphi-xe3