bodyで指定したPOSTリクエストを使用して、指定されたファイルをサーバ側で動的に作成し、レスポンスとしてクライアントにストリーミングします。クライアント側の問題は、PCのハードドライブではなく、応答オブジェクト(ブラウザのキャッシュメモリ、一時ファイル)にファイルがダウンロードされていることです。強制的に大きなファイルをダウンロードするブラウザ
ブラウザが直接/ streamsフォルダにアクセスしたり、ダウンロードしたりするためにバイトストリームを直接渡すことができますか?
ファイルサイズが非常に大きく、ガジェットのハードドライブに十分なスペースがなく、そこに作成してGET要求のリンクを提供するための十分なスペースがありません。だから私はそれを即座に作成し、POST応答としてクライアントにストリームする必要があります。
今、私はコードをAngularで書いていますが、言語は本当に重要ではありません。ブラウザがどのように状況を処理するのかを理解したいと思います。
HTTPリクエストを実行すると、ブラウザがソケットに渡す前に何かしていると思います。そして、私はブラウザが要求を実行したコードに渡す前に受信したリクエストで何かを行うことを確信しています。
私は、レスポンスヘッダーを設定するだけで、ブラウザが/ Downloadsにファイルをダウンロードできることを意味しますか?パケットがブラウザによって「盗まれた」場合、待機中のHTTPリクエストにはどうなりますか?また、レスポンスヘッダがレスポンスオブジェクトに到着したとき、レスポンスのボディが/ Downloadsにダウンロードしたいファイルバイトストリームであることをブラウザに何とか通知できますか?
また、サーバーコードも変更する可能性があります。
EDITより詳細な説明:
私のサーバーは、クライアントへの5GBのファイルを送信しています。ブラウザの一時的なメモリにそのファイルを受け取るのではなく、ファイルをハードドライブに直接保存したいと思います。
しかし、当然のことながら、ブラウザはユーザーのコンピュータへの直接アクセスを禁止しているので、そこに書き込むことはできません。では、ブラウザのバイトストリームを処理してファイルに保存するにはどうすればよいですか?
できません。ダウンロード場所はクライアントによって決定されます。 Windowsでは「このPC /ダウンロード」は通常はデフォルトですが、クライアントは何かを決定することができます。 – PHPglue
ユーザファイルシステム上の特定のフォルダにファイルをダウンロードしようとする目的は何ですか? – guest271314
問題は一般的にPC上のファイルをダウンロードし、特定のパスにダウンロードしないことです。今はファイルをブラウザのキャッシュメモリにダウンロードするだけで、PCのハードドライブにはダウンロードされません。これが少し明確になることを願っています。 – user3622167