Laravel中的文件上传路径不正确

时间:2019-05-29 18:29:27

标签: php laravel laravel-5

我是Laravel的初学者。

我在项目中使用Laravel 5.8。

我使用以下组件:CkEditor + https://github.com/UniSharp/laravel-filemanager

上传文件时,它们可以上传到存储设备/应用程序。我希望它们可以从网站上获得,并位于以下文件夹中:public / upload

我的lfm.php文件:

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',
    ],
];

传统上传正常工作(将文件上传到public / upload目录):

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

如何解决?

3 个答案:

答案 0 :(得分:0)

为此,您需要遵循框架准则,这是在使用框架准则进行开发时的最佳实践。

作为示例代码,您可以在文档中找到任何内容:https://laravel.com/docs/5.8/filesystem

编辑:

要保存在公用文件夹中是相同的逻辑,请尝试flutter pub global run peanut Storage::disk('public')->put('filename', $file_content);方法,您可以指向要放置文件的目录,但这是在5.8中,我不知道您正在使用什么版本,但是我想这是从5.2 / 3版本开始起作用的,请查看并让我们知道它已经起作用。

答案 1 :(得分:0)

编辑文件“config/filesystems.php”

来自

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

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

答案 2 :(得分:-1)

请遵循以下步骤: 转到config / filesystem.php 然后将其更改为:

'disks' => [

    'local' => [
        'driver' => 'local',
        'root' => public_path(),
    ],

    'public' => [
        'driver' => 'local',
        'root' => storage_path('app/public'),
        'url' => env('APP_URL').'/storage',
        'visibility' => 'public',
    ],