在使用 Laravel 開發(fā)時,我們可能會遇到下載功能不能夠正確處理中文文件名的問題。這個問題主要是由于在文件名中包含有中文字符所導致的。要解決這個問題,我們需要對文件名進行 URL 編碼。
在 PHP 中,可以使用 urlencode()
函數(shù)來對文件名進行編碼。但是,在 Laravel 中我們可以使用內(nèi)置的 Str::slug()
方法來完成這個任務。
Str::slug()
方法可以將一個字符串轉(zhuǎn)化為 URL 友好的 “slug” 格式。但是,我們可以選擇不傳入第二個參數(shù),以保留原有字符,只進行 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()
方法將文件名進行了編碼,并將編碼后的字符串作為第二個參數(shù)傳遞給 download()
方法。
通過這種方式,我們可以確保 Laravel 在處理下載文件時能夠正確處理包含中文字符的文件名。
以上就是laravel 下載功能不能用中文的詳細內(nèi)容,更多請關(guān)注www.xfxf.net其它相關(guān)文章!