2016-05-16 10 views
2

Webサービスがファイルの最初の部分のみを必要とする場合(例えば、PDFファイルの最初のページのサムネイルを生成する場合)、サービスはすべての情報を取得した後に要求を終了する応答を送信できます必要なので、クライアントはファイルの残りの部分をアップロードしませんか?Webサービスでファイルのアップロードを停止し、早期応答を返すことは可能ですか?

+0

あなたはどの言語/フレームワークを使用していますか? –

+0

可能であれば、任意の言語/フレームワーク(Node、PHP、Pythonなど)を使用すると便利です。 –

答えて

1

多少裕福なやり方で、そうです。切断する。からRFC 7230, section 6.3.1

接続はいつでも、意図の有無にかかわらず閉じることができます。

クライアントが要求を再試行しないことをクライアントに知らせる本当の方法はありません。リクエストメソッドが冪等であるかどうかは、すべて沸騰します。同じセクションから:

インバウンド接続が早まってクローズされた場合、クライアントは新しい接続を開くことができ、自動的にこれらの要求のすべてがidempotent methodsを持っている場合、リクエストの中止されたシーケンスを再送信します。

ここで実際に問題となるのは、サーバーがアップロードされたデータチャンクに対してフィードバックを与えることができないクライアント - サーバー通信のポイントです。最後のチャンスはクライアントからヘッダーを読み込んだ直後でしたが、明らかに必要な情報は得られません。別々のリクエストで部分アップロードを試して実装することもできますが、それはother problemsとなります。それに、あなたは落ち着きを失います。

あなたがそのルートに行くことを望むなら、expectation negotiationchunk extensionsのような知られていない機能から利益を得ることができます。おそらく両方。

このように、あなたは、例えば次のように成功する可能性はほとんどありません。 PHPは苦労しているaborting uploads。同じことがPythonにも当てはまります。 Node.jsはactually do thisを単独で実行することができます。しかし、その解決策は本当にハックであり、クライアントに非常に適応することに依存しています。

関連する問題