所以我正在开发一个基本的文件上传系统,大部分看起来都能正常工作。大多数文件都能顺利上传,但由于某种原因,其他文件就不行了,我得到了以下错误:
这不是一个权限错误,因为它确实工作的一些文件-我不相信这是一个文件大小或文件类型的问题。
我的上传方法如下:
$file = Input::file('photo');
$destinationPath = 'user_img/';
$extension = $file->getClientOriginalExtension();
$rand = str_random(12);
$filename = 'usr_'. Auth::user()->id . '_str=' . $rand . '_file='. Crypt::encrypt($file->getClientOriginalName()) .'.'. $extension;
$upload_success = $file->move($destinationPath, $filename);
我在Web上找不到任何解决方案,也不知道它为什么会抛出这个异常。有什么想法吗?
4条答案
按热度按时间55ooxyrt1#
我不想在屏幕截图中计算文件名中的所有字符,但您的文件名可能存在长度问题。Wikipedia文件名-长度限制
ecfsfe2w2#
在我的情况下,这是一个问题:在文件名中使用保留字符。
这是我如何得到的文件名:
这意味着最终的文件名将包含
-
、:
和_
等字符。在阅读维基百科文章www.example.com时https://en.wikipedia.org/wiki/Filename#Reserved_characters_and_words,我意识到:
(冒号)是一个保留字符,一旦我将其删除(通过将时间戳部分修改为date('Ymd_His')
),错误就消失了,上传成功。polkgigr3#
啊该死的,它似乎是因为我的文件长度超过255个字符,因此文件系统是不喜欢它。我已经改变了从加密到MD5和问题现在得到解决。
js81xvg64#
类似的事情发生在我身上,当时的情况是这样的:通过视图,我正在通过输入加载一个文件。当我试图将文件保存到文件夹时,我得到了这个错误。我使用laravel 9和livewire。最后我不得不使用liveware提供的方法:
富恩特斯:https://laravel-livewire.com/docs/2.x/file-uploads