为了账号安全,请及时绑定邮箱和手机立即绑定

上传图片时调用 null 成员函数 storeAs()

上传图片时调用 null 成员函数 storeAs()

PHP
慕尼黑8549860 2023-10-01 17:11:33
我正在尝试将图像上传到我的数据库,一切似乎都是故意的,但是当我上传图像时出现以下错误:对 null 调用成员函数 storeAs()这看起来很正常,但我仍然收到该错误。控制器function Create(Request $request){        $book = Book::create([            'name' => $request->book_name,            'writer_name' => $request->writer_name,            'isbn' => $request->book_isbn,            'image' => $request->file('book_image')->storeAs('public/images', $id.'.jpg'),        ]);        $book->save();        return redirect('/');        }超文本标记语言<input class="form-control" type="file" name="book_image" id="book_image" placeholder="Image">路线Route::post('create','EditController@Create');
查看完整描述

1 回答

?
芜湖不芜

TA贡献1796条经验 获得超7个赞

当您将图像上传到 Laravel 时,您需要包含正确的enctype:


<form method="POST" action="{{ url('/update') }}" enctype="multipart/form-data">

  @csrf

  <input class="form-control" type="file" name="book_image" id="book_image" placeholder="Image">

  ...

</form>

如果你不包括enctype="multipart/form-data",$request->file('book_image')将永远是null。


作为旁注,您可能应该为此添加某种形式的验证,以强制上传图像,并且它是有效的图像格式:


https://laravel.com/docs/7.x/validation#rule-required

https://laravel.com/docs/7.x/validation#rule-image


要显示图像,您应该能够使用以下命令:


@foreach($books as $book)

  <img src="{{ asset($book->image) }}"/>

@endforeach

public编辑:从方法中删除该单词saveAs():


'image' => $request->file('book_image')->storeAs('images', uniqid().'.jpg')

这样,它应该与助手一起工作asset()。


查看完整回答
反对 回复 2023-10-01
  • 1 回答
  • 0 关注
  • 90 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信