1
votes

I am very beginner in Laravel.

I use Laravel 5.8 in my project.

I use this component: CkEditor + https://github.com/UniSharp/laravel-filemanager .

When uploading files, they get to upload to storage/app. I would like them to be available from the website and located in the folder: public/upload

My lfm.php file:

return [
    /*
    |--------------------------------------------------------------------------
    | Routing
    |--------------------------------------------------------------------------
     */

    'use_package_routes'       => true,

    // // Use relative paths (without domain)
    // 'relative_paths'           => false,

    /*
    |--------------------------------------------------------------------------
    | Multi-User Mode
    |--------------------------------------------------------------------------
     */

    'allow_multi_user'         => false,

    'allow_share_folder'       => true,



    /*
    |--------------------------------------------------------------------------
    | Folder Names
    |--------------------------------------------------------------------------
     */

    // Flexible way to customize client folders accessibility
    // If you want to customize client folders, publish tag="lfm_handler"
    // Then you can rewrite userField function in App\Handler\ConfigHandler class
    // And set 'user_field' to App\Handler\ConfigHandler::class
    // Ex: The private folder of user will be named as the user id.
    'user_folder_name'         => UniSharp\LaravelFilemanager\Handlers\ConfigHandler::class,
    'base_directory' => 'public',
    'shared_folder_name'       => 'upload',
    'thumb_folder_name'        => 'thumbs',
    'files_folder_name' => 'file',
    'images_folder_name' => 'img',



    'folder_categories'        => [
        'file'  => [
            'folder_name'  => 'upload',
            'startup_view' => 'grid',
            'max_size'     => 50000, // size in KB
            'valid_mime'   => [
                'image/jpeg',
                'image/pjpeg',
                'image/png',
                'image/gif',
                'image/svg+xml',
            ],
        ],
        'image' => [
            'folder_name'  => 'photos',
            'startup_view' => 'list',
            'max_size'     => 50000, // size in KB
            'valid_mime'   => [
                'image/jpeg',
                'image/pjpeg',
                'image/png',
                'image/gif',
                'image/svg+xml',
                'application/pdf',
                'text/plain',
            ],
        ],
    ],

    /*
    |--------------------------------------------------------------------------
    | Upload / Validation
    |--------------------------------------------------------------------------
     */

    'disk'                     => 'public',

    'rename_file'              => false,

    'alphanumeric_filename'    => false,

    'alphanumeric_directory'   => true,

    'should_validate_size'     => false,

    'should_validate_mime'     => true,

    // permissions to be set when create a new folder or when it creates automatically with thumbnails
    'create_folder_mode'       => 0755,

    // permissions to be set on file upload.
    'create_file_mode'         => 0644,

    // If true, it will attempt to chmod the file after upload
    'should_change_file_mode'  => true,

    // behavior on files with identical name
    // setting it to true cause old file replace with new one
    // setting it to false show `error-file-exist` error and stop upload
    'over_write_on_duplicate'  => false,

    /*
    |--------------------------------------------------------------------------
    | Thumbnail
    |--------------------------------------------------------------------------
     */

    // If true, image thumbnails would be created during upload
    'should_create_thumbnails' => false,

    // Create thumbnails automatically only for listed types.
    'raster_mimetypes'         => [
        'image/jpeg',
        'image/pjpeg',
        'image/png',
    ],

    'thumb_img_width'          => 200,

    'thumb_img_height'         => 200,

    /*
    |--------------------------------------------------------------------------
    | jQuery UI options
    |--------------------------------------------------------------------------
     */

    'resize_aspectRatio'       => false,

    'resize_containment'       => true,

    /*
    |--------------------------------------------------------------------------
    | File Extension Information
    |--------------------------------------------------------------------------
     */

    'file_type_array'          => [
        'pdf'  => 'Adobe Acrobat',
        'doc'  => 'Microsoft Word',
        'docx' => 'Microsoft Word',
        'xls'  => 'Microsoft Excel',
        'xlsx' => 'Microsoft Excel',
        'zip'  => 'Archive',
        'gif'  => 'GIF Image',
        'jpg'  => 'JPEG Image',
        'jpeg' => 'JPEG Image',
        'png'  => 'PNG Image',
        'ppt'  => 'Microsoft PowerPoint',
        'pptx' => 'Microsoft PowerPoint',
    ],

    'file_icon_array'          => [
        'pdf'  => 'fa-file-pdf-o',
        'doc'  => 'fa-file-word-o',
        'docx' => 'fa-file-word-o',
        'xls'  => 'fa-file-excel-o',
        'xlsx' => 'fa-file-excel-o',
        'zip'  => 'fa-file-archive-o',
        'gif'  => 'fa-file-image-o',
        'jpg'  => 'fa-file-image-o',
        'jpeg' => 'fa-file-image-o',
        'png'  => 'fa-file-image-o',
        'ppt'  => 'fa-file-powerpoint-o',
        'pptx' => 'fa-file-powerpoint-o',
    ],

    /*
    |--------------------------------------------------------------------------
    | php.ini override
    |--------------------------------------------------------------------------
    |
    | These values override your php.ini settings before uploading files
    | Set these to false to ingnore and apply your php.ini settings
    |
    | Please note that the 'upload_max_filesize' & 'post_max_size'
    | directives are not supported.
     */
    'php_ini_overrides'        => [
        'memory_limit' => '256M',
    ],
];

The traditional upload works correctly (uploads files to the public / upload directory):

$file->move(public_path($path), $uniqueName . '.' . $extension);

How can you fix it?

2

2 Answers

0
votes

For that, you need to follow the framework guidelines, its the best practice while you're developing using on it.

For reference, codes example you can find anything in the documentation: https://laravel.com/docs/5.8/filesystem

Edit:

To save in public folder is the same logic, try Storage::disk('public')->put('filename', $file_content); The Storage::disk() method you can point the directory you want to put the file, but this is in the 5.8, I don't know what version what you're using but I guess this is works since 5.2/3, check out and let us know it worked.

0
votes

Edit File "config/filesystems.php"

From

'root' => storage_path('app/public'), 

To

'root' => storage_path('../public/storage')