3

シンプルな DataSnap REST サーバーがあり、TWebModule に、パス「/upload_file」で POST 要求をリッスンするアクションを追加しました。onAction イベントには、次のコードがあります。

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>

残念ながら、この件に関する情報はあまりありません。私は何時間も多くのことを試してきましたが、成功しませんでした. 前もって感謝します。

4

1 に答える 1

0

関連する質問TIdHTTPServerファイルのアップロードを参照してhttps://stackoverflow.com/a/6197138/80901に回答してください:

TIdHTTPServerは現在、マルチパート/フォームデータの送信をネイティブでサポートしていません。これは、Indy 11のToDoリストにあります。それまでの間、mjnが提案したように、TIdDecoderMIMEを使用して、投稿されたMIMEデータを手動で解析する必要があります。以前にエンバカデロとインディのフォーラムに投稿された例があります。

于 2013-03-21T10:32:44.900 に答える