首頁 >php框架 >Laravel >laravel 下載功能不能用中文

laravel 下載功能不能用中文

PHPz
PHPz原創
2023-05-29 14:23:38523瀏覽

在使用 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 在處理下載檔案時能夠正確處理包含中文字元的檔案名稱。

以上是laravel 下載功能不能用中文的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn