ホームページ >PHPフレームワーク >Laravel >Laravelのダウンロード機能が中国語では使えない
Laravel を使用して開発している場合、ダウンロード機能が中国語のファイル名を正しく処理できないという問題が発生することがあります。この問題は主に、ファイル名に漢字が含まれていることが原因で発生します。この問題を解決するには、ファイル名を URL エンコードする必要があります。
PHP では、urlencode()
関数を使用してファイル名をエンコードできます。ただし、Laravel では、組み込みの Str::slug()
メソッドを使用してこのタスクを実行できます。
Str::slug()
このメソッドは、文字列を URL に適した「スラッグ」形式に変換できます。ただし、2 番目のパラメータを渡さないことを選択して、元の文字を保持し、URL エンコードのみを実行することもできます。
以下はサンプル コードです:
public function downloadFile($filename) { $fullPath = storage_path('app/download/' . $filename); $headers = [ 'Content-Type' => 'application/octet-stream', ]; $escapedFilename = Str::slug($filename, ''); return response()->download($fullPath, $escapedFilename, $headers); }
上記のコードでは、Str::slug()
メソッドを使用してファイル名とエンコードされた文字列をエンコードします。は、2 番目のパラメータとして download()
メソッドに渡されます。
このようにして、ダウンロードされたファイルを処理するときに、Laravel が中国語の文字を含むファイル名を正しく処理できることを確認できます。
以上がLaravelのダウンロード機能が中国語では使えないの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。