Laravel 文件上传或移动有特殊字符问题
Laravel file upload or move issue with special characters
我已经在我的应用程序中成功实现了一些 Laravel 文件管理功能:上传、下载、移动。至少我会说它是成功的,因为它工作正常,直到我发现我在存储 文件时遇到 问题 [=30] =]。
在我的例子中,我用冒号标记了它。还有其他角色可以触发它。我可以成功注册一个带有文件输入的表单:我的意思是没有这些字符,我可以毫无问题地上传、下载和编辑。但是一旦我在我的文件名中得到一个冒号,一个用于路径的输入字段:($filename = $request->input('inputFileName') .'.'. $file->getClientOriginalExtension();
$path = $file->storeAs('folder',$filename);
) 我遇到了问题。
首先,文件名不再被记录:从冒号开始,文件名的其余部分未被记录。例如,假设文件名的输入是 a:b
;在我的文件夹中,我将注册 a
而不是扩展名。不用说这让我在想要下载时遇到 File not found at path
错误。当我想将带有冒号的文件名更改为另一个时,我也会遇到该错误。我对编辑的另一件事是,我无法将没有这些字符(此处为冒号)的文件重命名为带有这些字符的文件。这样做时我得到 php: Warning: rename The filename, directory name, or volume label syntax is incorrect. (code: 123)
。我找过它并找到了 。好像和OS文件系统有关。我在 Windows 10 OS 使用 Laravel 5.8.
你们中有人遇到过这个问题吗?你们是如何解决这个问题的? Laravel 有办法解决这个问题吗?.. 任何帮助或建议将不胜感激
不要使用原始名称保存文件,只需生成一个随机名称来保存文件,并将原始名称(如果需要)保留在数据库中或保存文件旁边的另一个文件中的事件中。永远不要相信客户端输入。
我已经在我的应用程序中成功实现了一些 Laravel 文件管理功能:上传、下载、移动。至少我会说它是成功的,因为它工作正常,直到我发现我在存储 文件时遇到 问题 [=30] =]。
在我的例子中,我用冒号标记了它。还有其他角色可以触发它。我可以成功注册一个带有文件输入的表单:我的意思是没有这些字符,我可以毫无问题地上传、下载和编辑。但是一旦我在我的文件名中得到一个冒号,一个用于路径的输入字段:($filename = $request->input('inputFileName') .'.'. $file->getClientOriginalExtension();
$path = $file->storeAs('folder',$filename);
) 我遇到了问题。
首先,文件名不再被记录:从冒号开始,文件名的其余部分未被记录。例如,假设文件名的输入是 a:b
;在我的文件夹中,我将注册 a
而不是扩展名。不用说这让我在想要下载时遇到 File not found at path
错误。当我想将带有冒号的文件名更改为另一个时,我也会遇到该错误。我对编辑的另一件事是,我无法将没有这些字符(此处为冒号)的文件重命名为带有这些字符的文件。这样做时我得到 php: Warning: rename The filename, directory name, or volume label syntax is incorrect. (code: 123)
。我找过它并找到了
你们中有人遇到过这个问题吗?你们是如何解决这个问题的? Laravel 有办法解决这个问题吗?.. 任何帮助或建议将不胜感激
不要使用原始名称保存文件,只需生成一个随机名称来保存文件,并将原始名称(如果需要)保留在数据库中或保存文件旁边的另一个文件中的事件中。永远不要相信客户端输入。