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> 

不幸的是,关于这个主题没有太多的信息,我一直在努力了几个小时,但没有成功,很多的事情。 在此先感谢。

+0

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

+0

不幸的是,我的项目使用了DataSnap,并且编写了另一个应用程序来处理上传,似乎增加了我现有的复杂性项目。谢谢你的建议。 – 2013-03-22 04:35:16

参阅相关的问题TIdHTTPServer file upload并回答https://*.com/a/6197138/80901

TIdHTTPServer目前不支持多部分/表单数据 提交本身。这就是Indy 11的待办事项列表。在 的同时,您必须使用 TIdDecoderMIME手动解析发布的MIME数据,如mjn所示。在之前的Embarcadero和Indy论坛上发布了 的例子。

+0

我实际上正在寻找一种方法来处理这个通过DataSnap,而不是Indy;但使用TIdDecoderMIME解析数据是一个好主意。我会继续努力,我会发布我的代码,以防万一我弄明白了。谢谢你的回答。 – 2013-03-22 04:32:11

+0

IIRC DataSnap内部使用Indy - 因此,除非DataSnap以其他方式实现此缺失功能,否则链接的解决方法是一个选项 – mjn 2013-03-22 09:06:42