【问题标题】:Images upload form laravel图片上传表单 laravel
【发布时间】:2014-03-12 05:24:48
【问题描述】:

我的图片上传不起作用:

控制器:

if (Input::hasFile('image')) {
        $bikecreate->image = Input::file('image');
        $destinationPath = public_path().'/upload/';
        $filename = str_random(6) . '_' . $bikecreate->users_id ;
        Input::file('image')->move($destinationPath, $filename);
    }

表格:

{{ Form::file('image', array('files' => true)) }}

接受表单后一切正常,但上传结束后,数据库中的文件路径在我的服务器上显示 .tmp/file。

【问题讨论】:

    标签: forms laravel laravel-4


    【解决方案1】:

    没有看到你的代码的其余部分,很难确切地看到发生了什么,但我猜你的行 $bikecreate->image = Input::file('image') 是你为数据库设置文件路径的地方。您实际上已将UploadedFile 实例设置为$bikecreate 上的image 属性,据推测,当序列化为要放入数据库的内容时,会调用__toString()

    __toString()File 实例上调用(它本身从 SPLFileInfo 继承 __toString 返回该文件的路径。所以你会认为你得到了上传的文件名,但实际上是因为上传的文件实际上是PHP 中的临时文件,您将获得临时名称。

    尝试将该行更改为以下内容:

    $bikecreate->image = Input::file('image')->getClientOriginalName();
    

    这会检索上传文件的实际原始名称,而不是 PHP 给它的临时路径。

    不用说,这仅与UploadedFiles 相关,普通文件应该能够__toStringed 来获取文件的路径,尽管您会注意到它是完整路径而不是基本名称。为此,请使用getBaseName()

    【讨论】:

      猜你喜欢
      • 2013-05-14
      • 2014-01-30
      • 2015-06-05
      • 2021-03-20
      • 1970-01-01
      • 1970-01-01
      • 2023-03-12
      • 2018-02-20
      • 2017-05-27
      相关资源
      最近更新 更多