TWebResponse不解析我发布的文件
我有一个简单的DataSnap REST服务器,在TWebModule上我添加了一个操作来侦听路径“/ upload_file”上的POST请求。 在的OnAction事件中,我有这样的代码:TWebResponse不解析我发布的文件
procedure TWebModule.WebModulePostFileAction(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
var i: Integer;
str: String;
begin
for i :=0 to Request.Files.Count-1 do
Begin
Str:= Str +','+ Request.Files.Items[i].FileName;
// I will like to save or move the uploaded file to i.e. c:\myFiles\
End;
Response.Content:= Str;
end;
Request.Files.Count始终为0,但是当我检查Request.content对象,我可以看到多文件内容。我如何从请求中获取发布的文件?并将其保存在磁盘中的某处。从那里我为张贴的样子
我的HTML表单:
<form action="/upload_file" method="POST" enctype="multipart/form-data">
Notes: <input type="text" name="notes"/>
File: <input type="file" name="my_file"/>
<input type="submit" value="Submit">
</form>
不幸的是,关于这个主题没有太多的信息,我一直在努力了几个小时,但没有成功,很多的事情。 在此先感谢。
参阅相关的问题TIdHTTPServer file upload并回答https://stackoverflow.com/a/6197138/80901:
TIdHTTPServer目前不支持多部分/表单数据 提交本身。这就是Indy 11的待办事项列表。在 的同时,您必须使用 TIdDecoderMIME手动解析发布的MIME数据,如mjn所示。在之前的Embarcadero和Indy论坛上发布了 的例子。
我实际上正在寻找一种方法来处理这个通过DataSnap,而不是Indy;但使用TIdDecoderMIME解析数据是一个好主意。我会继续努力,我会发布我的代码,以防万一我弄明白了。谢谢你的回答。 – 2013-03-22 04:32:11
IIRC DataSnap内部使用Indy - 因此,除非DataSnap以其他方式实现此缺失功能,否则链接的解决方法是一个选项 – mjn 2013-03-22 09:06:42
xxm可以本地处理多部分/表单数据文件上传,甚至还支持从其他请求读取上传进度:http://xxm.sourceforge.net/这里有一个例子https://sourceforge.net/p/xxm/code/HEAD/tree/trunk/Delphi/demo2/09%20上传%20Progress/ – 2013-03-21 19:20:56
不幸的是,我的项目使用了DataSnap,并且编写了另一个应用程序来处理上传,似乎增加了我现有的复杂性项目。谢谢你的建议。 – 2013-03-22 04:35:16