我尝试在表单注册表上上传图像,但当我提交此表单时,收到此错误“图像必须是图像”。我已经更改了模型以接受所有图像扩展名,并尝试在表单上添加“enctype=“multipart/form-data”“,但它不起作用。
我该如何解决这个问题?我需要上传这张照片。
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Foundation\Auth\User;
use Illuminate\Foundation\Livros;
class Livro extends Model
{
use HasFactory;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'livro',
'users_id',
'namel',
'autor',
'editora',
'categoria',
'classificação',
'descricao',
'image'=>'required|image|mimes:jpeg,jpg,png,bmp,gif,svg',
];
}
控制器
protected function validator(Request $request)
{
return Validator::make($request, [
'namel' => ['required', 'string', 'max:200'],
'autor' => ['required', 'string', 'email', 'max:200'],
'editora' => ['required', 'string', 'max:50'],
'categoria'=> ['required', 'string', 'min:50'],
'classificação'=> ['required', 'string', 'min:1','max:2'],
'descricao'=> ['required', 'string', 'min:200'],
'image'=> ['required'],
]);
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function create(StoreUpdateLivro $request)
{
$user = Auth::user()->id;
$data = $request->all();
if($request->file('image')->isValid()){
$image = $request->image->store('livros');
$data['image'] = $image;
}
Livro::create([
'users_id' => $user,
'namel' => $request['namel'],
'autor' => $request['autor'],
'editora' => $request['editora'],
'categoria'=> $request['categoria'],
'classificação'=>$request['classificação'] ,
'descricao'=>$request['descricao'],
'image'=>$request['image'],
]);
return view('livros/cadastro');
}
刀锋
<form method="POST" enctype=”multipart/form-data” action="{{ url('/cadastro_livros') }}">
<div class="form-group row">
<label for="image" class="col-md-4 col-form-label text-md-right">{{ __('CAPA') }}</label>
<div class="col-md-6">
<input type="file" class="form-control @error('image') is-invalid @enderror" name="image" >
@error('image')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
<br>
</div>
</div>
</form>
2条答案
按热度按时间k97glaaz1#
您的
enctype=”multipart/form-data”
没有正确设置,它使用了奇怪的"
(dobule quotes),看到它们像”
而不是"
,所以可能您没有设置enctype
,因此没有文件被发送...gcxthw6b2#
我的问题就是这样解决的!
1.确保您已添加
enctype="multipart/form-data"
1.输入类型应为文件
<input type="file" name="image">
然后在验证中
'image' => 'file|mimes:jpg,jpeg,png,gif|max:1024',