如何使用Laravel上传图像?
问题是: 我想使用Laravel将一个图像上传到mySQL数据库 我所尝试的: 我寻找了其他堆栈溢出问题,但它们没有帮助 我期待的结果是:如何使用Laravel上传图像?,laravel,image,file,path,upload,Laravel,Image,File,Path,Upload,问题是: 我想使用Laravel将一个图像上传到mySQL数据库 我所尝试的: 我寻找了其他堆栈溢出问题,但它们没有帮助 我期待的结果是: 是将图像名称或路径保存到数据库“我的表”中的一列中,以便稍后检索并显示为博客中的文章。首先,您需要视图中的表单不要忘记csrf标记: <form action="/image-upload" method="POST" enctype="multipart/form-data"> @csrf <input type="fil
是将图像名称或路径保存到数据库“我的表”中的一列中,以便稍后检索并显示为博客中的文章。首先,您需要视图中的表单不要忘记csrf标记:
<form action="/image-upload" method="POST" enctype="multipart/form-data">
@csrf
<input type="file" name="image">
<button type="submit">Upload</button>
</form>
然后在控制器上创建一个函数,该函数将验证图像并将其移动到“public/images”文件夹中
public function imageUploadPost()
{
request()->validate([
'image' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
]);
$imageName = time().'.'.request()->image->getClientOriginalExtension();
request()->image->move(public_path('images'), $imageName);
}
要获得更好的解决方案,请阅读以下内容:首先,您需要视图上的表单。不要忘记csrf令牌:
<form action="/image-upload" method="POST" enctype="multipart/form-data">
@csrf
<input type="file" name="image">
<button type="submit">Upload</button>
</form>
然后在控制器上创建一个函数,该函数将验证图像并将其移动到“public/images”文件夹中
public function imageUploadPost()
{
request()->validate([
'image' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
]);
$imageName = time().'.'.request()->image->getClientOriginalExtension();
request()->image->move(public_path('images'), $imageName);
}
要获得更好的解决方案,请阅读以下内容:实际上,对于Laravel,它只涉及几行代码。假设您有一个用户拥有存储在数据库中的化身。以下是您如何从数据库中存储和检索化身: 一,。首先,您需要在users表中有一个可以存储二进制数据的avatar列。根据您希望允许化身图像的大小,列的数据类型可以是以下之一: 最大64KB的BLOB 高达16MB的MEDIUMBLOB 高达4GB的LONGBLOB 二,。要将上载的图像存储在数据库中,可以执行以下操作: 路由::post'user/{id}',函数请求$Request,$id{ //从请求中获取文件 $file=$request->file'image'; //获取文件的内容 $contents=$file->openFile->fread$file->getSize; //将内容存储到数据库中 $user=App\user::find$id; $user->avatar=$contents; $user->save; }; 三,。要获取并输出化身,您可以执行以下操作: 路由::获取'user/{id}/avatar',函数$id{ //查找用户 $user=App\user::find1; //在响应中返回具有正确MIME类型的图像 返回响应->生成$user->化身,200,阵列 “内容类型”=>new finfoFILEINFO_MIME->buffer$user->avatar ; };
注意:请记住这一点,MySQL不是存储BLOB的合适解决方案。您可能需要使用类似AmazonS3的对象存储服务。实际上,对于Laravel,它只涉及几行代码。假设您有一个用户拥有存储在数据库中的化身。以下是您如何从数据库中存储和检索化身: 一,。首先,您需要在users表中有一个可以存储二进制数据的avatar列。根据您希望允许化身图像的大小,列的数据类型可以是以下之一: 最大64KB的BLOB 高达16MB的MEDIUMBLOB 高达4GB的LONGBLOB 二,。要将上载的图像存储在数据库中,可以执行以下操作: 路由::post'user/{id}',函数请求$Request,$id{ //从请求中获取文件 $file=$request->file'image'; //获取文件的内容 $contents=$file->openFile->fread$file->getSize; //将内容存储到数据库中 $user=App\user::find$id; $user->avatar=$contents; $user->save; }; 三,。要获取并输出化身,您可以执行以下操作: 路由::获取'user/{id}/avatar',函数$id{ //查找用户 $user=App\user::find1; //在响应中返回具有正确MIME类型的图像 返回响应->生成$user->化身,200,阵列 “内容类型”=>new finfoFILEINFO_MIME->buffer$user->avatar ; };
注意:请记住这一点,MySQL不是存储BLOB的合适解决方案。您可能需要使用类似Amazon S3的对象存储服务。使用此服务上载图像
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
// $this->validate($request,[//'movie_name'=>'required',
// // 'description'=>'required',
// //'video_url'=>'required',
// 'image'=>'required|mimes:jpeg,jpg,png,gif|required|max:10000',
// ]);
if ($request->hasFile('image') && $request->hasFile('image2')) {
$file = $request->file('image');
//$image=$file->getClientOriginalName();
$image = time().'.'.$file->getClientOriginalExtension();
$destinationPath ='assets/admin/uploads/image/';
$file->move($destinationPath,$image);
//echo $destinationPath;exit();
//echo $image."<br/>";
$file2 = $request->file('image2');
$bg_images = time().'.'.$file2->getClientOriginalExtension();
//$bg_images=$file2->getClientOriginalName();
$destinationPath ='assets/admin/uploads/bg_images/';
$file2->move($destinationPath,$bg_images);
$insert_data=array('movie_name'=>$request->movie_name,
'description'=>$request->description,
'video_url'=>$request->video_url,
'image'=>$image,
'bg_images'=>$bg_images,
'created_at'=>now(),
'updated_at'=>now()
);
//print_r($insert_data);exit();
}
else
{
if ( $request->hasFile('image2')) {
$file2 = $request->file('image2');
$bg_images = time().'.'.$file2->getClientOriginalExtension();
//$bg_images=$file2->getClientOriginalName();
$destinationPath ='assets/admin/uploads/bg_images/';
$file2->move($destinationPath,$bg_images);
//echo $destinationPath;exit();
//echo $bg_images;
$insert_data=array('movie_name'=>$request->movie_name,
'description'=>$request->description,
'video_url'=>$request->video_url,
//'image'=>$image,
'bg_images'=>$bg_images,
'created_at'=>now(),
'updated_at'=>now()
);
//print_r($insert_data);exit();
}
if ($request->hasFile('image') ) {
$file = $request->file('image');
//$image=$file->getClientOriginalName();
$image = time().'.'.$file->getClientOriginalExtension();
$destinationPath ='assets/admin/uploads/image/';
$file->move($destinationPath,$image);
//echo $destinationPath;exit();
//echo $image."<br/>";
$insert_data=array('movie_name'=>$request->movie_name,
'description'=>$request->description,
'video_url'=>$request->video_url,
'image'=>$image,
//'bg_images'=>$bg_images,
'created_at'=>now(),
'updated_at'=>now()
);
// print_r($insert_data);exit();
}
if ( ! $request->hasFile('image2') && ! $request->hasFile('image') ) {
$insert_data=array('movie_name'=>$request->movie_name,
'description'=>$request->description,
'video_url'=>$request->video_url,
//'image'=>$image,
// 'bg_images'=>$bg_images,
'updated_at'=>now()
);
// print_r($update_data);exit();
}
}
//exit();
// echo $image;
//exit();
//print_r($insert_data);exit();
$insert=DB::table('movies')->insert($insert_data);
if ($insert) {
return redirect()->route('admin.list_movies')->withSuccess('Record saved');
}
else {
return redirect()->route('admin.list_movies')->withError('Record not saved');
}
}
使用此选项上载图像
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
// $this->validate($request,[//'movie_name'=>'required',
// // 'description'=>'required',
// //'video_url'=>'required',
// 'image'=>'required|mimes:jpeg,jpg,png,gif|required|max:10000',
// ]);
if ($request->hasFile('image') && $request->hasFile('image2')) {
$file = $request->file('image');
//$image=$file->getClientOriginalName();
$image = time().'.'.$file->getClientOriginalExtension();
$destinationPath ='assets/admin/uploads/image/';
$file->move($destinationPath,$image);
//echo $destinationPath;exit();
//echo $image."<br/>";
$file2 = $request->file('image2');
$bg_images = time().'.'.$file2->getClientOriginalExtension();
//$bg_images=$file2->getClientOriginalName();
$destinationPath ='assets/admin/uploads/bg_images/';
$file2->move($destinationPath,$bg_images);
$insert_data=array('movie_name'=>$request->movie_name,
'description'=>$request->description,
'video_url'=>$request->video_url,
'image'=>$image,
'bg_images'=>$bg_images,
'created_at'=>now(),
'updated_at'=>now()
);
//print_r($insert_data);exit();
}
else
{
if ( $request->hasFile('image2')) {
$file2 = $request->file('image2');
$bg_images = time().'.'.$file2->getClientOriginalExtension();
//$bg_images=$file2->getClientOriginalName();
$destinationPath ='assets/admin/uploads/bg_images/';
$file2->move($destinationPath,$bg_images);
//echo $destinationPath;exit();
//echo $bg_images;
$insert_data=array('movie_name'=>$request->movie_name,
'description'=>$request->description,
'video_url'=>$request->video_url,
//'image'=>$image,
'bg_images'=>$bg_images,
'created_at'=>now(),
'updated_at'=>now()
);
//print_r($insert_data);exit();
}
if ($request->hasFile('image') ) {
$file = $request->file('image');
//$image=$file->getClientOriginalName();
$image = time().'.'.$file->getClientOriginalExtension();
$destinationPath ='assets/admin/uploads/image/';
$file->move($destinationPath,$image);
//echo $destinationPath;exit();
//echo $image."<br/>";
$insert_data=array('movie_name'=>$request->movie_name,
'description'=>$request->description,
'video_url'=>$request->video_url,
'image'=>$image,
//'bg_images'=>$bg_images,
'created_at'=>now(),
'updated_at'=>now()
);
// print_r($insert_data);exit();
}
if ( ! $request->hasFile('image2') && ! $request->hasFile('image') ) {
$insert_data=array('movie_name'=>$request->movie_name,
'description'=>$request->description,
'video_url'=>$request->video_url,
//'image'=>$image,
// 'bg_images'=>$bg_images,
'updated_at'=>now()
);
// print_r($update_data);exit();
}
}
//exit();
// echo $image;
//exit();
//print_r($insert_data);exit();
$insert=DB::table('movies')->insert($insert_data);
if ($insert) {
return redirect()->route('admin.list_movies')->withSuccess('Record saved');
}
else {
return redirect()->route('admin.list_movies')->withError('Record not saved');
}
}
您应该能够使用文件输入获取所需信息:单击此处您应该能够使用文件输入获取所需信息:单击此处