如何将图像从模态存储到数据库?
How can I store an image to the database from modal?
我想通过模态存储图片,通常我都是这样存储图片的。但它从不存储,它在数据库中存储空值,就像文件甚至没有上传一样。模式存储上的其他所有内容都完美无缺,除了图像。
这是我控制器上图像的代码。
if($request->hasFile('image')){
$file = $request->file('image');
$extension = $file->getClientOriginalExtension();
$filename = time() .'.'.$extension;
$file->move('uploads/event/',$filename);
$event->image = $filename;
}
在我看来,这就是我上传图片的方式。
<div class="text-center">
<img src='http://ssl.gstatic.com/accounts/ui/avatar_2x.png' width="300px" height="300px" class="avatar img-circle img-thumbnail" alt="avatar" name="image" >
</div><hr>
<div class="input-group">
<div class="custom-file">
<input type="file" class="custom-file-input" name="image" >
<label class="custom-file-label">Upload picture</label>
</div>
</div>
在你的控制器上试试这个:
use Image;
public function store(CreateRequest $request)
{
$file = $request->file('image');
$imagename = $file->getClientOriginalName();
$imageext = $file->getClientOriginalExtension();
$path = 'upload/image/'.time().'.'.$imageext;
$image = Image::make($file);
$image->save($path);
$input = $request->all();
$input['image'] = $path;
$user = $this->userRepository->create($input);
return redirect(route('users.index'));
}
对update()
函数做同样的事情
文件将存储在 /public/upload/image
文件夹中
您也可以尝试使用 'Intervention\Image' 和 File
class:
composer require intervention/image
<?php
...
use File;
use Intervention\Image\Facades\Image
...
if ($request->hasFile('image')) {
$image = $request->file('image');
$filename = 'image.'.$image->getClientOriginalExtension();
$save_path = storage_path().'uploads/event/';
$path = $save_path.$filename;
$public_path = 'uploads/event/'.$filename;
// Make the user a folder and set permissions
File::makeDirectory($save_path, $mode = 0755, true, true);
// Save the file to the server
Image::make($image)->resize(300, 300)->save($save_path.$filename);
// Save the public image path
$event->image = $public_path;
$event->save();
}
return response()->json(['path' => $path], 200);
} else {
return response()->json(false, 200);
}
对于我的代码,唯一的问题是我没有使用 enctype="multipart/form-data"。找了选项,找到了这个,写在action和form-group div的形式上。它有效,图像存储并更新。
<form action="{{action('CalendarController@store')}}" method="POST" enctype="multipart/form-data">
{{csrf_field()}}
<div class="modal-body">
<div class="form-group" enctype="multipart/form-data">
自从我完成这项工作后,我将开始实施其他代码以获得更好的性能,并开始了解 laravel 中的存储。谢谢大家!
我想通过模态存储图片,通常我都是这样存储图片的。但它从不存储,它在数据库中存储空值,就像文件甚至没有上传一样。模式存储上的其他所有内容都完美无缺,除了图像。
这是我控制器上图像的代码。
if($request->hasFile('image')){
$file = $request->file('image');
$extension = $file->getClientOriginalExtension();
$filename = time() .'.'.$extension;
$file->move('uploads/event/',$filename);
$event->image = $filename;
}
在我看来,这就是我上传图片的方式。
<div class="text-center">
<img src='http://ssl.gstatic.com/accounts/ui/avatar_2x.png' width="300px" height="300px" class="avatar img-circle img-thumbnail" alt="avatar" name="image" >
</div><hr>
<div class="input-group">
<div class="custom-file">
<input type="file" class="custom-file-input" name="image" >
<label class="custom-file-label">Upload picture</label>
</div>
</div>
在你的控制器上试试这个:
use Image;
public function store(CreateRequest $request)
{
$file = $request->file('image');
$imagename = $file->getClientOriginalName();
$imageext = $file->getClientOriginalExtension();
$path = 'upload/image/'.time().'.'.$imageext;
$image = Image::make($file);
$image->save($path);
$input = $request->all();
$input['image'] = $path;
$user = $this->userRepository->create($input);
return redirect(route('users.index'));
}
对update()
函数做同样的事情
文件将存储在 /public/upload/image
文件夹中
您也可以尝试使用 'Intervention\Image' 和 File
class:
composer require intervention/image
<?php
...
use File;
use Intervention\Image\Facades\Image
...
if ($request->hasFile('image')) {
$image = $request->file('image');
$filename = 'image.'.$image->getClientOriginalExtension();
$save_path = storage_path().'uploads/event/';
$path = $save_path.$filename;
$public_path = 'uploads/event/'.$filename;
// Make the user a folder and set permissions
File::makeDirectory($save_path, $mode = 0755, true, true);
// Save the file to the server
Image::make($image)->resize(300, 300)->save($save_path.$filename);
// Save the public image path
$event->image = $public_path;
$event->save();
}
return response()->json(['path' => $path], 200);
} else {
return response()->json(false, 200);
}
对于我的代码,唯一的问题是我没有使用 enctype="multipart/form-data"。找了选项,找到了这个,写在action和form-group div的形式上。它有效,图像存储并更新。
<form action="{{action('CalendarController@store')}}" method="POST" enctype="multipart/form-data">
{{csrf_field()}}
<div class="modal-body">
<div class="form-group" enctype="multipart/form-data">
自从我完成这项工作后,我将开始实施其他代码以获得更好的性能,并开始了解 laravel 中的存储。谢谢大家!