所以我正在开发一个基本的文件上传系统,大部分似乎都在工作。大多数文件完美无缺地上传,但由于某种原因,其他文件没有,我收到以下错误:
这不是权限错误,因为它适用于某些文件 - 我不认为它是文件大小或文件类型问题。
我的上传方法如下:
$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);
我没有在网上找到任何解决方案,我无法弄清楚为什么它会抛出这个异常。有什么想法吗?
答案 0 :(得分:6)
我不想计算屏幕截图中文件名中的所有字符,但文件名的长度可能存在问题。 Wikipedia Filename - Length Restrictions
答案 1 :(得分:1)
在我的情况下,问题是:在文件名中使用保留字符。
这就是我获取文件名的方式:
$photo_name = "User_".md5($user->id).'_'.date('Y-m-d H:i:s').".$ext";
这意味着最终的文件名将包含-
,:
和_
等字符。在阅读这篇维基百科文章https://en.wikipedia.org/wiki/Filename#Reserved_characters_and_words时,我意识到:
(冒号)是一个保留字符,一旦我摆脱它(通过将时间戳部分修改为date('Ymd_His')
,错误是过去了,上传成功了。
答案 2 :(得分:0)