laravel 下載功能不能用中文

在使用 laravel 開發時,我們可能會遇到下載功能不能夠正確處理中文文件名的問題。這個問題主要是由于在文件名中包含有中文字符所導致的。要解決這個問題,我們需要對文件名進行 url 編碼。

php 中,可以使用 urlencode() 函數來對文件名進行編碼。但是,在 Laravel 中我們可以使用內置的 Str::slug() 方法來完成這個任務。

Str::slug() 方法可以將一個字符串轉化為 URL 友好的 “slug” 格式。但是,我們可以選擇不傳入第二個參數,以保留原有字符,只進行 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() 方法將文件名進行了編碼,并將編碼后的字符串作為第二個參數傳遞給 download() 方法。

通過這種方式,我們可以確保 Laravel 在處理下載文件時能夠正確處理包含中文字符的文件名。

? 版權聲明
THE END
喜歡就支持一下吧
點贊7 分享