#php #database #laravel #image #laravel-5
#php #База данных #laravel #изображение #laravel-5
Вопрос:
Я создаю приложение в Laravel 5.7. Я хочу загрузить изображение в базу данных через него, и я хочу показать его из базы данных.
Я пробовал разные методы в Интернете, поскольку у меня возникали проблемы в
InterventionImageFacadesImage
Я последовал многим советам из Интернета, внес изменения в конфигурацию.приложение
внесло изменения в Composer
В конце используется
use InterventionImageFacadesImage as Image;
Итак, я решаю проблему «Неопределенный образ класса»
но теперь у меня возникают проблемы с «Файлом неопределенного класса»,
метод getClientOriginalExtension не найден.
Метод Upsize, make не найден.
Мой код
<?php
namespace AppHttpControllers;
use File;
use InterventionImageFacadesImage as Image;
use AppUser;
use IlluminateHttpRequest;
class UserController extends Controller
{
//
protected $user;
/**
* [__construct description]
* @param Photo $photo [description]
*/
public function __construct(
User $user )
{
$this->user = $user;
}
/**
* Display photo input and recent images
* @return view [description]
*/
public function index()
{
$users = User::all();
return view('profile', compact('users'));
}
public function uploadImage(Request $request)
{
$request->validate([
'image' => 'required',
'image.*' => 'image|mimes:jpeg,png,jpg,gif,svg|max:2048'
]);
//check if image exist
if ($request->hasFile('image')) {
$images = $request->file('image');
//setting flag for condition
$org_img = $thm_img = true;
// create new directory for uploading image if doesn't exist
if( ! File::exists('images/originals/')) {
$org_img = File::makeDirectory('images/originals/', 0777, true);
}
if ( ! File::exists('images/thumbnails/')) {
$thm_img = File::makeDirectory('images/thumbnails', 0777, true);
}
// loop through each image to save and upload
foreach($images as $key => $image) {
//create new instance of Photo class
$newPhoto = new $this->user;
//get file name of image and concatenate with 4 random integer for unique
$filename = rand(1111,9999).time().'.'.$image->getClientOriginalExtension();
//path of image for upload
$org_path = 'images/originals/' . $filename;
$thm_path = 'images/thumbnails/' . $filename;
$newPhoto->image = 'images/originals/'.$filename;
$newPhoto->thumbnail = 'images/thumbnails/'.$filename;
//don't upload file when unable to save name to database
if ( ! $newPhoto->save()) {
return false;
}
// upload image to server
if (($org_img amp;amp; $thm_img) == true) {
Image::make($image)->fit(900, 500, function ($constraint) {
$constraint->upsize();
})->save($org_path);
Image::make($image)->fit(270, 160, function ($constraint) {
$constraint->upsize();
})->save($thm_path);
}
}
}
return redirect()->action('UserController@index');
}
}
Пожалуйста, предложите мне какой-либо код для загрузки изображений без обновления репозиториев или подскажите, как я могу устранить проблемы с этим кодом.
Комментарии:
1. Я хочу загрузить изображение в базу данных — означает, что вы хотите сохранить
blob
в базе данных, или вы хотите сохранитьpath/to/your/image.jpg
в базе данных?2. Изображение в базу данных…
3. Вы меня не поняли. Вы можете сохранить путь к файлу изображения или сохранить изображение как двоичный объект
Ответ №1:
Начало времени читайте по ссылке ниже, потому что laravel обработал создание каталога и хэш-изображения и поместил каталог в файловую систему laravel, затем прочитал имя файла при хранении в каталоге и удерживает имя в поле таблицы, когда требуется изображение, извлекает поле имени и вызывает физический адрес на сервере
Ответ №2:
$upload_id = $request->file('FILENAME');
$file_name = time().$upload_id->getClientOriginalName();
$destination =
$_SERVER["DOCUMENT_ROOT"].'/adminbusinessplus/storage/uploads';
$request->file('FILENAME')->move($destination, $file_name);
$string="123456stringsawexs";
$extension = pathinfo($upload_id, PATHINFO_EXTENSION);
$path = $destination.'/'.$file_name;
$public =1;
$user_id = $request->logedin_user_id;
$hash = str_shuffle($string);
$request->user_id = $request->logedin_user_id;
$request->name = $file_name;
$request->extension = $extension;
$request->path = $path;
$request->public = $public;
$request->hash = $hash;
//$request INSERT INTO MODEL uploads
$file_id = Module::insert("uploads", $request);