Я пытаюсь загрузить изображение в свою модель в Laravel, поэтому я решил использовать библиотеку Czim / Paperclip.Вот мои файлы конфигурации:
В моем файле миграции я добавил следующее:
$table->string('image_file_name')->nullable();
$table->integer('image_file_size')->nullable();
$table->string('image_content_type')->nullable();
$table->timestamp('image_updated_at')->nullable();
$table->string('image_variants', 255)->nullable();
В моем app / config / filesystems.php я добавил диск со скрепкой:
'paperclip' => [
'driver' => 'local',
'root' => public_path('storage'),
'url' => env('APP_URL') . '/storage',
'visibility' => 'public',
],
Моя модель со ссылкой на скрепку:
public function __construct(array $attributes = [])
{
$this->hasAttachedFile('image', [
'variants' => [
'medium' => [
'auto-orient' => [],
'resize' => ['dimensions' => '300x300'],
],
'thumb' => '100x100',
],
'attributes' => [
'variants' => true,
],
]);
parent::__construct($attributes);
}
Дело в следующем: если я загружаю изображение в формате png или jpg, файл сохраняется по этому пути public\storage\App\User\000\000\007
, ноне в этом формате.У меня там 3 папки (оригинальная, средняя, большой), в которых содержится файл a7b7a025f3630860.txt
.В текстовом виде это имя загруженной картинки.
Я закончил тем, что добавил enctype="multipart/form-data"
в свою форму, но с добавленным этим enctype мои изображения равны нулю (они не загружаются).Если я удаляю enctype из формы, они загружаются по этому пути, но как .txts.
Вот dd($request->image)
из моего метода store:
"image" => UploadedFile {#295 ▼
-test: false
-originalName: "5.png"
-mimeType: "image/png"
-error: 0
#hashName: null
path: "C:\xampp\tmp"
filename: "php6E88.tmp"
basename: "php6E88.tmp"
pathname: "C:\xampp\tmp\php6E88.tmp"
extension: "tmp"
realPath: "C:\xampp\tmp\php6E88.tmp"
aTime: 2019-06-27 10:40:36
mTime: 2019-06-27 10:40:36
cTime: 2019-06-27 10:40:36
inode: 0
size: 9486
perms: 0100666
owner: 0
group: 0
type: "file"
writable: true
readable: true
executable: false
file: true
dir: false
link: false
linkTarget: "C:\xampp\tmp\php6E88.tmp"
}
Метод контроллера выглядит следующим образом:
$receipe = new Receipt();
$receipe->user_id = Auth::user()->id;
$receipe->name = $request->get('name');
$receipe->body = $request->get('body');
$receipe->url = $request->get('url');
$receipe->cooking_time = $request->get('cooking_time');
$receipe->image = $request->get('image');
$receipe->save();
Что я делаю не так?Спасибо,