德尔福使用: 2007。
你好,
我有一个带有两个文本输入和一个文件输入的简单网页。现在,要发送表单,必须填写文本输入和文件输入。通过 Synapse,我知道如何上传文件 ( HttpPostFile ) 以及如何发布数据 ( HttpMethod )。但是,我不知道如何做到这两点。
在查看了 Synapse 的源代码之后,我想我必须用边界或类似的东西来“格式化”我的数据。我想我的输入文件应该有一个边界,而我的文本输入应该有另一个边界。我找到了一篇关于这个主题的文章,但它是关于发送电子邮件附件的。我试图用 Synapse 重现他们所说的话,但没有结果。
HttpPostFile的代码:
function HttpPostFile(const URL, FieldName, FileName: string;
const Data: TStream; const ResultData: TStrings): Boolean;
var
HTTP: THTTPSend;
Bound, s: string;
begin
Bound := IntToHex(Random(MaxInt), 8) + '_Synapse_boundary';
HTTP := THTTPSend.Create;
try
s := '--' + Bound + CRLF;
s := s + 'content-disposition: form-data; name="' + FieldName + '";';
s := s + ' filename="' + FileName +'"' + CRLF;
s := s + 'Content-Type: Application/octet-string' + CRLF + CRLF;
WriteStrToStream(HTTP.Document, s);
HTTP.Document.CopyFrom(Data, 0);
s := CRLF + '--' + Bound + '--' + CRLF;
WriteStrToStream(HTTP.Document, s);
HTTP.MimeType := 'multipart/form-data; boundary=' + Bound;
Result := HTTP.HTTPMethod('POST', URL);
if Result then
ResultData.LoadFromStream(HTTP.Document);
finally
HTTP.Free;
end;
end;
谢谢你。