首页 新闻 会员 周边

ICS组件,HTTPCLI如何发送-multipart/form-data提交呢?

0
悬赏园豆:10 [已解决问题] 解决于 2023-05-23 22:29

如何支持 ----multipart/form-data--------------提交呢?-----------
像 indy一样?????????

ms: TIdMultiPartFormDataStream;
begin
if OpenDialog1.Execute then
begin
ms := TIdMultiPartFormDataStream.Create;
ms.AddFormField('filename', 'ddd.pdf');
ms.AddFile('file', OpenDialog1.FileName, '');
url := url + 'restupload';
IdHTTP1.Post(url, ms);
ms.Free;
end;
end;

Notouch的主页 Notouch | 初学一级 | 园豆:193
提问于:2023-05-23 10:10
< >
分享
最佳答案
0

如果你正在使用ICS组件中的HTTPCLI组件,你可以使用THttpCli组件的FormData属性来发送multipart/form-data请求。

以下是一个示例代码,展示了如何使用ICS的THttpCli组件发送multipart/form-data请求:

delphi
Copy code
procedure TForm1.Button1Click(Sender: TObject);
var
MultiPartFormData: TMimeMultiPartFormData;
ResponseStream: TMemoryStream;
begin
if OpenDialog1.Execute then
begin
MultiPartFormData := TMimeMultiPartFormData.Create;
try
MultiPartFormData.AddFile('file', OpenDialog1.FileName);
// 添加其他表单字段
MultiPartFormData.AddField('filename', 'ddd.pdf');

  ResponseStream := TMemoryStream.Create;
  try
    // 设置请求的URL
    HttpCli1.URL := 'http://example.com/upload';
    // 设置请求方法为POST
    HttpCli1.RequestMethod := 'POST';
    // 设置请求体为MultiPartFormData
    HttpCli1.RequestBody := MultiPartFormData;
    // 发送请求并接收响应
    HttpCli1.RcvdStream := ResponseStream;
    HttpCli1.PostAsync;
    // 等待请求完成
    while not HttpCli1.State = httpReady do
      Application.ProcessMessages;

    // 请求完成后,可以处理响应数据
    ResponseStream.Position := 0;
    // 处理响应数据...

  finally
    ResponseStream.Free;
  end;
finally
  MultiPartFormData.Free;
end;

end;
end;
在上述代码中,我们使用了TMimeMultiPartFormData类来创建一个multipart/form-data的请求体,并添加了文件字段和其他表单字段。然后,将MultiPartFormData赋值给THttpCli组件的RequestBody属性,设置请求的URL和方法为POST,并发送请求。

请注意,上述代码仅为示例,你需要根据自己的实际情况进行修改和适配。

收获园豆:10
Technologyforgood | 大侠五级 |园豆:5545 | 2023-05-23 21:49

TMimeMultiPartFormData 这个Delphi7好像没有

Notouch | 园豆:193 (初学一级) | 2023-05-23 22:29
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册