Delphi 使用: 2007.
こんにちは、
2 つのテキスト入力と 1 つのファイル入力を備えた単純な Web ページがあります。ここで、フォームを送信するには、テキスト入力とファイル入力の両方を入力する必要があります。Synapse では、ファイルをアップロードする方法 ( HttpPostFile ) とデータを投稿する方法 ( HttpMethod ) を知っています。しかし、私は両方を行う方法がわかりません。
Synapse のソース コードを見た後、データを境界などで "フォーマット" する必要があると思います。入力ファイル用に 1 つの境界を設定し、テキスト入力用に別の境界を設定する必要があると思います。この件に関する記事を見つけましたが、それは電子メールの添付ファイルの送信に関するものです。彼らが言ったことを 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;
ありがとうございました。