0

私はphpでファイルマネージャを構築しています。すべてのリクエストは PHP スクリプトによって処理されます。つまり、直接ダウンロード パスも事前にチェックされるため、特定のダウンロードを禁止したり、他のコンテンツを表示したりできます。

私の問題は、ここでスタックオーバーフローが発生することです。ダウンロードを準備する方法、つまり最初にコンテンツを表示し、次にページを一度更新してファイルを送信できるようにする方法がわかりません...しかし、副作用はありません。

もちろん、リフレッシュは問題ではありませんが、今のところリフレッシュの解決策はありません。header() で更新すると、ページにコンテンツが表示されなくなります。コンテンツの表示に関して更新または JavaScript が機能しますが、wget などを使用したダウンロードは機能しなくなります。

言い換えれば、問題は次のとおりです。

以前のコンテンツの読み込みにより、有効なステータス コードが送信されるため、wget や curl などのプログラムは更新に追従せず、ファイルはダウンロードされず、html のみがダウンロードされます。curl または wget で実際のファイルを取得するには、http ヘッダーを送信する必要がありますが、3XX リダイレクト ステータス コードには Location の値が必要です。header('Location: ..') が送信された場合、Web サイトは更新前に表示されません。

適切なステータス コードの送信が可能であり、ファイルの配布前にコンテンツが読み込まれるようにするソリューションが必要です。

部分的な解決策の 1 つがステータス コード 206 で見つかりました。これは場所の値を必要とせず、wget で引き続き機能します。curl は実際にはしません。多分より良い解決策がまだ利用可能ですか?

ご協力いただきありがとうございます!

4

2 に答える 2