我正在将一些文本和图像上传到数据库。我遇到错误:
在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);
}
}
答案 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'));