私は学術研究グループ向けのWebアプリケーションを作成しています。研究者は、大きなデータセット(100MB〜1GB)をCSV形式でアップロードできる必要があります。 CSVの最初の行にエラーがあると、すぐにエラーを返すことができます。クライアントが完全な要求を送信する前にWebサーバーが応答を開始できますか?
ただし、これが発生した場合、ブラウザは「接続がリセットされました」などと報告します。明らかに、私のWebサーバーは意味をなさない方法で応答しています。
ブラウザにエラーを返す前にHTTPリクエストストリーム(これはJVM上のKotlinです)を明示的に閉じると、問題はなくなります。しかし、要求ストリームの密接な実装が最初に行き、ストリーム全体を最後まで読み込むことが分かります。したがって、その時点で、ユーザーはCSVの最初の行にエラーがあることを知るために30分以上待たなければなりません。
私は何をしようとしていますか? HTTPプロトコルは、どのような状況でも、Webサーバーが完全な要求本文を送信する前に応答を開始することを許可していますか?そうでない場合は、問題があるかどうかを知る前に、ファイル全体がアップロードされるのをユーザーが待つ必要のないユーザーエクスペリエンスを提供する回避策を提案できますか?クライアントが通信の接続を開始し、サーバーが接続を閉じる場合は、サーバーが必要になり、その接続に応答することができる
Server listens for request
Client creates request
Client sends request to server
Server processes request
Server creates response
Server sends response to client
Client processes response
:よう
チャンク(たくさんの例があります)でアップロードしてから、各チャンクに問題がないかチェックしてください。エラーが出力されます。 –
ファイルを送信するために使用しているアプリケーションに応じて、非同期要求を使用して、一度に1つの回線を送信するCSVをループすることができます。ブラウザの場合は、HTML5ファイルAPIを使用できる可能性があります。 –
ありがとうございます。私は回避策に関する私の質問に答えているように感じる。これは、HTTPプロトコルが私がやっていることを許可していないと思っているのか、それともわからないのですか? –