图片上传形式laravel

时间:2014-02-13 11:08:33

标签: forms laravel laravel-4

我的图片上传无效:

控制器:

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)) }}

接受表单后,一切看起来都不错,但在上传结束后,数据库中的filepath显示在我服务器上的.tmp /文件。

1 个答案:

答案 0 :(得分:1)

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

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

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

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

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

不言而喻,这只与UploadedFile相关,普通文件应该只能__toString来获取文件的路径,尽管你会发现它会是完整的路径,而不是基本名称。为此,请使用getBaseName()