gpt4 book ai didi

delphi - Delphi中从TWebRequest获取文件

转载 作者:行者123 更新时间:2023-12-03 15:46:35 25 4
gpt4 key购买 nike

我使用 Delphi 作为服务器来服务许多不同的请求。所有这些简单的字符串都可以正常工作,但我在接收文件时遇到了一些问题。

所有这些都是使用网络代理服务实现的,所以我得到了一个方法

WebModule1WebActionItem1Action(Sender: TObject; Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);

我有一个/test 方法,类型为 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(因为我需要在稍后提供文件时返回它)

最佳答案

我也遇到了同样的问题,花了很长时间才找到答案。默认情况下,TWebRequest 不处理多部分表单。在您的项目中包含 ReqMulti 单元,它将被扩展以支持多部分,并且突然 Request.Files 对象将在其中实际包含数据。

顺便说一句,一旦您使用多部分表单,Request.GetFieldByName 似乎不再起作用,但 Request.ContentFields.Values['fieldname'] 可以。

关于delphi - Delphi中从TWebRequest获取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19974266/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com