在使用 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中文网其它相关文章!


BrianSab16 天前
发表在:南通速强批量添加水印专家 v1.83Эта статья для ознак...
Ronaldgag18 天前
发表在:11日17日,星期一,在这里每天60秒读懂世界!Free PHP Blockchain ...
NelsonBOT18 天前
发表在:11日16日,星期日,在这里每天60秒读懂世界!Free non-criminal in...
Darrenjhjhjhcunny20 天前
发表在:11日14日,星期五,在这里每天60秒读懂世界!Атака черной материи...
parifoot-rdc-791 个月前
发表在:laravel 找不到页面Votre guide <a href=...
Anya142Sa1 个月前
发表在:ASUS华硕A8N-SLI Deluxe主板BIOS 10110Hello friends! I c...
91资源网站长-冰晨1 个月前
发表在:广告合作123
FrankFAT1 个月前
发表在:10日14日,星期二,在这里每天60秒读懂世界!Big cocks of blacks ...
RichardGlymn1 个月前
发表在:Java webservice多个参数怎么调用https://t.me/win_1_c...
Thomasstolo2 个月前
发表在:Java webservice多个参数怎么调用https://t.me/s/Casin...