laravel - 在laravel中调用null的成员函数getClientOriginalExtension()?
问题描述
当我提交图像时,它显示以下错误:
在 null 上调用成员函数 getClientOriginalExtension()
我不知道,错误在哪里。
这是我的控制器,名为ProductController
:
public function store(Request $request)
{
$request->validate([
'name' => 'required',
'brand' => 'required',
'detail' => 'required',
'size' => 'required',
'type' => 'required',
'price' => 'required',
'image' => 'required',
]);
$image = $request->file('image');
$new_name = rand().'.'.$image->getClientOriginalExtension();
$image->move(public_path('images'), $new_name);
$form_data = array(
'image' => $new_name,
'name' => $request->input('name'),
'size' => $request->input('size'),
'type' => $request->input('type'),
'price' => $request->input('price'),
'detail' => $request->input('detail'),
'brand' => $request->input('brand'),
);
Product::create($form_data);
return redirect()->route('product.index')->withSuccess('Done');
}
此行出现错误:$new_name = rand().'.'.$image->getClientOriginalExtension();
这是我提交图片的表单:
<form id="myForm" method="post" action="{{ route('product.store') }}">
@csrf
<div class="user-box">
<input type="text" name="name" required="">
<label>Name</label>
@error('name')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
<div class="user-box">
<input type="text" name="brand" required="">
<label>Brand</label>
@error('brand')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
<div class="user-box">
<input type="text" name="price" required="">
<label>Price</label>
@error('price')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
<div class="user-box" style=" border-bottom: 1px solid white">
<span style="font-weight: bold; color: white; font-size: 16px; margin-bottom: 30px ">Size</span>
<select name="size" id="size" style="width: 40px; font-size: 16px; margin-bottom: 20px ">
<option value="50 ML">50 ML</option>
<option value="100 ML">100 ML</option>
<option value="200 ML">200 ML</option>
<option value="500 ML">500 ML</option>
<option value="1 L">1 L</option>
<option value="4 L">4 L</option>
<option value="10 L">10 L</option>
<option value="20 L">20 L</option>
</select>
@error('size')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
<div class="user-box">
<input type="text" name="type" required="">
<label>Type</label>
@error('type')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
<div class="user-box">
<input type="text" name="detail" required="">
<label>Detail</label>
@error('detail')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
<div class="user-box">
Image<input type="file" name="image" required="">
<label>Image</label>
@error('image')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
<button class="a" id="a" value="submit" name="submit">Submit</button>
</form>
解决方案
您的服务器没有收到您正在上传的文件,
尝试将 enctype='multipart/form-data' 添加到刀片文件中的表单中。
<form id="myForm" method="post" action="{{ route('product.store') }}" enctype='multipart/form-data'>
推荐阅读
- javascript - 如何通过刷新触发带有持久复选框的 OnClick 事件
- swift - 如何使用 Mac-Catalyst 添加最近的文件
- php - php中preg_replace的问题-在html中转换特定代码
- c++ - 矢量while循环仅返回断路器?
- matlab - Matlab - 如何并行运行循环(函数)?
- javascript - 如何使用 Chrome 扩展 API 访问未激活的选项卡的“文档”
- python - 通过循环将行移动到列(熊猫,python)
- android - 如何将 API 连接到由 Flutter 制作的应用程序?
- java - EMR 内没有 smtp 提供程序
- python - 如何绘制两个相互重叠的图形?