我的图片上传无效:
控制器:
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。
没有看到其余的代码,很难确切了解正在发生的事情,但是我的猜测是,您所在的行$bikecreate->image = Input::file('image')
是您设置数据库文件路径的地方。您实际上已经将UploadedFile
实例设置为该实例的image
属性$bikecreate
,大概是在序列化为要放入数据库的对象时__toString()
调用该实例。
__toString()
调用File
实例(实例本身继承__toString
自SPLFileInfo)返回该文件的路径。因此,您认为您已获取上载的文件名,但实际上由于上载的文件实际上是PHP中的一个临时文件,因此获得了该临时名称。
尝试将该行更改为以下内容:
$bikecreate->image = Input::file('image')->getClientOriginalName();
这将检索上载文件的实际原始名称,而不是PHP为其指定的临时路径。
毋庸置疑,这仅与UploadedFile
s有关,普通文件应该仅能被__toString
ed获取文件的路径,尽管您会注意到它将是完整路径而不是基本名称。为此,请使用getBaseName()
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句