Laravel Storage не сохраняет изображение

Я пытаюсь сохранить изображение в хранилище. Вот мой код

 public function uploadEducationalInstitutionLogo(Request $request)
    {
        if ($request->hasFile('logo')) {

            $file = $request->file('logo');
            $fileName = time() . $file->getClientOriginalName();

            $img = Image::make($file);

            $img->fit(820, 312, function (Constraint $constraint) {
                $constraint->upsize();
            });

            Storage::putFileAs('institution-logo', (string)$img->encode(null, 95), $fileName);

            return response()->json([
                'filename' => $fileName
            ]);
        }
    }

Мой запрос от внешнего интерфейса vue с использованием компонента vue filepond в качестве загрузчика изображений:

 <file-pond
    name="logo"
    allow-multiple="false"
    max-files="1"
    accepted-file-types="image/jpeg, image/png"
    v-bind:files="myFiles"
    :label-idle="label"
    v-on:init="handleFilePondInit"
    v-on:processfile="onload"
    :server="server"
  />
<script>
data() {
    return {
      myFiles: [],
      server: {
        url: `http://127.0.0.1:8000/api/logo`,
        process: {
          headers: {
            Authorization: localStorage.getItem("access_token"),
          },
        },
      },
    };
  },
<script>

Здесь возникает следующая ошибка:

ErrorException: fopen () ожидает, что параметр 1 будет допустимым путем, строка указана в файле ...

Вот мой запрос API на сохранение изображения:  введите описание изображения здесь

Я хочу хранить свои изображения в storage / images / agency-logo / image.jpg

Другой вопрос, где лучше всего будет экономить:

1) storage / images / .. ИЛИ
2) public / storage / images / ...?

Заранее спасибо !


person Osman Rafi    schedule 22.02.2021    source источник
comment
Вы добавили enctype="multipart/form-data" в свою форму?   -  person BABAK ASHRAFI    schedule 22.02.2021
comment
пожалуйста, посмотрите мою отредактированную версию @BABAKASHRAFI   -  person Osman Rafi    schedule 22.02.2021
comment
Пожалуйста, добавьте свою html-форму в вопрос   -  person BABAK ASHRAFI    schedule 22.02.2021
comment
Вы отправляете его через запрос ajax (xhr)?   -  person BABAK ASHRAFI    schedule 22.02.2021
comment
посмотрите отредактированную версию еще раз, пожалуйста   -  person Osman Rafi    schedule 22.02.2021


Ответы (1)


$data = $request->all();
foreach ($data['logo'] as $imgFile) {
    $imgName = 'logo_' . random_int(111111, 999999) . '.' . $imgFile->getClientOriginalExtension();
    $imgFile->move(storage_path('/images/', $imgName);
}

Используйте move (storage_path);

person Gevorg Amiraghyan    schedule 22.02.2021
comment
Привет, @Gevorg, добро пожаловать! Я немного привел в порядок ваш ответ - если вы нажмете «Изменить», вы увидите, как я использовал обратные кавычки (`) для форматирования кода, чтобы его было легче читать. - person Adam Hopkinson; 22.02.2021