【问题标题】:Laravel File Exception "Could not move the file"Laravel 文件异常“无法移动文件”
【发布时间】:2014-09-03 19:46:27
【问题描述】:

所以我正在开发一个基本的文件上传系统,该系统在大多数情况下似乎都在工作。大多数文件都能完美通过并顺利上传,但由于某种原因,其他文件没有,我收到以下错误:

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

我的上传方法如下:

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

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

【问题讨论】:

  • 已经做到了。我说得很清楚。

标签: php image file laravel upload


【解决方案1】:

我不想计算屏幕截图中文件名中的所有字符,但文件名的长度可能存在问题。 Wikipedia Filename - Length Restrictions

【讨论】:

  • 宾果游戏!谢谢,在 Laravel 聊天室得到了同样的答案 :)
  • 很好,我也不想数字符
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    就我而言,这是个问题:在文件名中使用保留字符。

    这就是我获取文件名的方式:

    $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'),错误就消失了,上传成功了.

    【讨论】:

    • : 是我的问题。从文件名中删除它后,它按预期工作,谢谢..
    猜你喜欢
    • 2017-10-15
    • 1970-01-01
    • 2020-02-27
    • 2019-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多