Laravel Проблема с именем хранилища изображений Nova - PullRequest
0 голосов
/ 08 июля 2020

Итак, я пытаюсь сохранить изображение, загруженное через сообщение в блоге, в указанную c папку с исходным именем файла.

Изображение уже сохранено по правильному пути к файлу, но оно сохраняя его как случайное строковое имя. Мой код ниже:

public function fields(Request $request)
{
    return [
        ID::make('id')->sortable(),
        Text::make('URL ID', 'id')->hideFromIndex(),
        Text::make('Title', 'title'),
        select::make('Market Type', 'market_id')->options([
            'church' => 'Church',
            'school' => 'School',
            'business' => 'Business',
            'municipal' => 'Municipal'
        ]),
        Trix::make('Body', 'text'),
        Image::make('Image', 'main_image')
            ->disk('blog')
            ->storeOriginalName('main_image')
            ->maxWidth(200)
            ->prunable(),
    ];
}

1 Ответ

1 голос
/ 08 июля 2020

-> storeOriginalName () - это не имя сохраненного файла, а имя файла, которое браузер получает при нажатии кнопки «загрузить» в поле изображения на странице сведений.

Можно легко изменить имена файлов с методом -> store (), примерно так:

Image::make('Image', 'main_image')
    ->store(function (Request $request, $model) {
        $filename = $request->main_image->getClientOriginalName();
        $request->main_image->storeAs('/', $filename, 'blog');            
        return [
            'main_image' => '/' . $filename,
            'main_image_name' => $request->main_image->getClientOriginalName()

        ];
    })
    ->maxWidth(200)
    ->storeOriginalName('main_image_name')
    ->prunable(),
...