Lors du développement avec Laravel, nous pouvons rencontrer le problème que la fonction de téléchargement ne peut pas gérer correctement les noms de fichiers chinois. Ce problème est principalement dû à l'inclusion de caractères chinois dans le nom du fichier. Pour résoudre ce problème, nous devons encoder l'URL du nom de fichier.
En PHP, vous pouvez utiliser la fonction urlencode()
pour encoder les noms de fichiers. Cependant, dans Laravel, nous pouvons utiliser la méthode intégrée Str::slug()
pour accomplir cette tâche. La méthode Str::slug()
peut convertir une chaîne au format "slug" convivial pour les URL. Cependant, nous pouvons choisir de ne pas passer le deuxième paramètre pour conserver les caractères d'origine et effectuer uniquement l'encodage d'URL. 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()
rrreee
Dans le code ci-dessus, nous utilisons la méthodeStr::slug()
pour encoder le nom du fichier et utiliser la chaîne encodée lorsque les deux paramètres sont transmis à la méthode download()
. 🎜🎜De cette façon, nous pouvons garantir que Laravel peut gérer correctement les noms de fichiers contenant des caractères chinois lors du traitement des fichiers téléchargés. 🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!