Вы можете сделать это:
Если вы хотите сохранить путь для загруженного изображения, вам нужна таблица базы данных.
Schema::create('images', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('path');
$table->timestamps();
});
И модель Image
:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Image extends Model
{
protected $table = 'images';
protected $fillable = [
'path',
'name',
];
}
создайте каталог repository
на app\Repositories
(возможно, вам также необходимо создать каталог):
namespace App\Repositories;
use Illuminate\Support\Facades\Storage;
use Symfony\Component\HttpFoundation\Response;
class ImageRepository
{
/**
* Upload the image
* @param $image
* @return \Illuminate\Contracts\Routing\ResponseFactory|\Illuminate\Http\Response
*/
public function uploadImage($image, $name=null)
{
return $this->upload($image);
}
/**
* Upload the image
*
* @return \Illuminate\Contracts\Routing\ResponseFactory|\Illuminate\Http\Response
*/
private function upload($image, $name=null)
{
try{
$name == null ? $name = uniqid() : $name = $name;
$path = Storage::disk('public')->put('images', $image);
$uploadedImage = Image::create([
'path' => $path,
'name' => $name,
]);
return $uploadedImage;
}catch (\Exception $exception){
return response('Internal Server Error', Response::HTTP_INTERNAL_SERVER_ERROR);
}
}
}
Код вашего контроллера:
//Create a variable to the image repository:
private $imageRepository;
public function __construct(ImageRepository $imageRepository)
{
$this->imageRepository = $imageRepository;
}
//In your update function:
public function update(Request $request)
{
$image = Input::file('file'); //i think you call your input on the html form as 'file'
$img = Image::make($image)->resize(320, 240, function ($constraint) {
$constraint->aspectRatio();
});
$imgName = rand(11111, 99999).'.'.$image->getClientOriginalExtension();
$this->imageRepository->uploadImage($img, $imgName);
//Continue your logic here
}
Помните: вам нужно добавить enctype
в HTML-форму:
enctype = "multipart / form-data"
Надеюсь, это поможет.