无效的getClientOriginalName()和$ request-> hasFile('image')无效

时间:2019-08-15 17:04:49

标签: php laravel

我正在将一些文本和图像上传到数据库。我遇到错误:

  

在null上调用成员函数getClientOriginalName()

使用以下代码时:

$file = $request->file('image')->getClientOriginalName(); // 'image' is name in html form.

但是$file = $request->input('image');获得图片名称。

if($request->hasFile('image'))也不起作用(返回FALSE)。)

在我的html中,

<form method="post" action="/postupload" enctype="multipart/form-data">
<input type="text" name="title">
<input type="file" name="image">
</form>

在我的控制器中,

public function upload(Request $request) {

$title = $request->input('title');

if($request->hasFile('image')) {

$file = $request->file('image')->getClientOriginalName();
$image->move(public_path('images'), $file);

$post = new Post();
$is_success = $post->addPost($title, $file);
}

}

2 个答案:

答案 0 :(得分:0)

当您使用$ request-> file()方法访问上载的文件时,它将返回php的本地SplFileInfo类的实例。通过查看php手册,您可以查看该类上可用的方法,并在此处进行检查:https://www.php.net/manual/en/class.splfileinfo.php

还要看一下Laravel的文档:https://laravel.com/docs/5.8/requests#files

要进一步扩展答案:如果您需要对文件做SplFileInfo无法做的事情,则可以通过Storage Facade检索新上传的文件,该文件是在Flysystem软件包的基础上构建的,它将为您提供一个用于处理文件的大量选项。首先在这里阅读文件存储Larave'ls文档:https://laravel.com/docs/5.8/filesystem#retrieving-files

答案 1 :(得分:0)

使用代替

$request->file('upload_file');
var_dump($request->file('upload_file'));