Laravel Ошибка сохранения файла изображения в public / storage / cover_images - PullRequest
0 голосов
/ 11 июля 2020

В PostController@store код:

public function store(PostFormRequest $request)
{
    if($request->hasFile('cover_image')){
        $filenamewithExt = $request->file('cover_image')->getClientOriginalName();
        $filename = pathinfo($filenamewithExt, PATHINFO_FILENAME);
        $extension = $request->file('cover_image')->getClientOriginalExtension();
        $fileNameToStore = $filename.'_'.time().'.'.$extension;
        $path = $request->file('cover_image')->storeAs('public/storage/cover_image',$fileNameToStore);
    }else{
        $fileNameToStore = 'noimage.jpg';
    }

    $post = new Posts();
    $post->title = $request->get('title');
    $post->category = $request->get('category');
    $post->body = $request->get('body');
    $post->cover_image = $fileNameToStore;
    $post->slug = Str::slug($post->title);

    $duplicate = Posts::where('slug', $post->slug)->first();
    if ($duplicate) {
        return redirect('new-post')->withErrors('Title already exists.')->withInput();
    }

    $post->author_id = $request->user()->id;
    if ($request->has('save')) {
        $post->active = 0;
        $message = 'Post saved successfully';
    } else {
        $post->active = 1;
        $message = 'Post published successfully';
    }
    $post->save();
    
    return redirect('edit/' . $post->slug)->withMessage($message);
}

Маршрут в сети. php равен

 Route::post('new-post', 'PostController@store');
    

И опция загрузки изображения находится в create.blade. php как:

  <form action="/new-post" method="post" enctype="multipart/form-data">
        .....
        <label for="myfile">Select image files:</label>
        <input type="file" id="cover_image" name="cover_image" multiple><br><br>
  </form>

Имя изображения с отметкой времени хранится в таблице базы данных, но не в каталоге public / storage / cover_images.

1 Ответ

0 голосов
/ 11 июля 2020

Взгляните на свой config/filesystems.php. Сначала посмотрите, что установлено по умолчанию. В моем случае, например, он установлен на:

'default' => env('FILESYSTEM_DRIVER', 'local'),

Поскольку у меня нет FILESYSTEM_DRIVER в моем .env файле, по умолчанию я бы установил локальный.

Затем взгляните где root вашего локального диска указывает. В моем случае, например:

'local' => [
    'driver' => 'local',
    'root' => storage_path('app'),
],

Это означает, что в моем случае это будет базовый каталог моего проекта laravel. Возможно, ваш диск по умолчанию настроен на облачное хранилище или что-то еще, и ваши файлы попадают туда, где вы их не ожидаете.

...