Загрузка изображений заканчивается как .txt в Laravel с использованием Paperclip - PullRequest
0 голосов
/ 27 июня 2019

Я пытаюсь загрузить изображение в свою модель в 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();

Что я делаю не так?Спасибо,

1 Ответ

0 голосов
/ 27 июня 2019

Исправлено путем изменения метода хранения в контроллере с $receipe->image = $request->get('image'); до $receipe->image = $request->file('image');

...