Laravel文件异常"无法移动文件"

时间:2014-07-13 21:56:31

标签: php image file laravel upload

所以我正在开发一个基本的文件上传系统,大部分似乎都在工作。大多数文件完美无缺地上传,但由于某种原因,其他文件没有,我收到以下错误:

could not move file

这不是权限错误,因为它适用于某些文件 - 我不认为它是文件大小或文件类型问题。

我的上传方法如下:

$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);

我没有在网上找到任何解决方案,我无法弄清楚为什么它会抛出这个异常。有什么想法吗?

3 个答案:

答案 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)

啊,该死的,似乎我的文件长度超过255个字符,因此文件系统并不喜欢它。我已经从地穴改为MD5,问题现在已经解决了。