1

私はしばらくの間 Web アプリを作成しており、画像の提供に関していくつかの問題に遭遇しています。

私のコードは、 を使用してサーバーからファイル データを取得し、file_get_contentsSlim のRequestオブジェクトのwriteメソッドを使用してファイルの内容を出力し、ヘッダーを設定します。ほとんどのファイルでこれは機能しますが、大きな画像では画像の寸法のグレーのアウトラインしか表示されないことがよくあります (モバイルおよびデスクトップの Chrome でテスト済み)。でリクエストエラーが発生したERR_SPDY_PROTOCOL_ERRORため、HTTP 2の問題であると思いました(テストしたサーバーは、nginx構成のディレクティブで設定されたHTTP 2接続をリッスンしますlisten [port] http2)が、応答で使用されるHTTPバージョンをダウングレードしようとしましたPSR-7のRequestInterfaceやり方withProtocolVersionで何も変わらなかった。

上記のコンテンツを使用してfile_get_contents出力することは、物事を行うための非常に回りくどい方法であることは知っていますが、このアプリのユーザーがアップロードされたファイルの場所を任意に設定できるようにする唯一の方法です。

$filepathこれは、ユーザーが要求したファイルへのパスである私のコードの最も関連性の高い部分です。このコードは、大きな画像を除くすべてのファイルで期待どおりに機能します。

return $response->withHeader('Content-Type', mime_content_type($filepath))->write(file_get_contents($filepath));
4

1 に答える 1