首页 > 解决方案 > Laravel 文件上传或移动带有特殊字符的问题

问题描述

我已经在我的应用程序中成功实现了一些 Laravel 文件管理功能:上传、下载、移动。至少我会说它是成功的,因为它工作正常,直到我发现在文件名/路径中存储带有一些特殊字符的文件时遇到问题

就我而言,我已经用冒号字符对其进行了注释。还有其他角色可以触发它。我可以成功注册一个带有文件输入的表单:我的意思是没有这些字符,我可以毫无问题地上传、下载和编辑。但是一旦我在我的文件名中得到一个冒号,一个用于路径的输入字段:($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 5.8 的 Windows 10 操作系统上。

你们中是否有人已经遇到过这个问题,你是如何解决这个问题的?Laravel 有什么可以处理的吗?.. 任何帮助或建议将不胜感激

标签: phplaravelfileupload

解决方案


不要使用原始名称保存文件,只需生成一个随机名称来保存文件并将原始名称(如果需要)保留在您的数据库或事件中保存的文件旁边的另一个文件中。永远不要相信客户端的输入。


推荐阅读