我的图片上传无效:
控制器:
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 /文件。
答案 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()
。