Laravel 5 - 我无法检索上传的文件,即使它们实际上传了

时间:2018-01-05 12:09:00

标签: php laravel file file-upload storage

我正在尝试创建一个简单的文件上传器,实际上文件已上传,我也可以删除它们但实际上我无法访问它们。 我举个例子:如果我想上传一张图片,一切似乎都很顺利(I can also return the Url after upload happened),正如您在screenshot中看到的那样。
但是当我尝试使用该网址时,我会收到error,或者如果我尝试将网址作为<img>的src插入,则图片无法加载。

请注意,我已经在第二张图片中看到了php artisan storage:link。我正在使用Homestead和Virtual box作为开发环境。

这是一些代码:
来自我的上传控制器

public function uploadFile(Request $request){
    $file = $request->file('file_field');
    $ext = $file->guessClientExtension();

    $validator = Validator::make(Input::all(), [
        'file_field' => 'required',
        'comment' => 'required',
        'confidentiality' => 'required',
    ]);

    if ($validator->fails()) {
        return Redirect::back()
                    ->withErrors($validator)
                    ->withInput();
    }

    $file_model = File::create([
        'id_paziente' => Input::get('idPatient'),
        'id_audit_log' => Input::get('idLog'),
        'id_file_confidenzialita' => Input::get('confidentiality'),
        'file_nome' => $file->getClientOriginalName(),
        'file_commento' => Input::get('comment'),
    ]);

    $file_model->save();
    return Storage::disk('public')->putFileAs("/patient/".Input::get('idPatient'), $file, $file->getClientOriginalName(), 'public');
}


我的配置/ filesystem.php

<?php

return [

'default' => 'public',

'cloud' => env('FILESYSTEM_CLOUD', 's3'),

'disks' => [

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

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

    's3' => [
        'driver' => 's3',
        'key' => env('AWS_ACCESS_KEY_ID'),
        'secret' => env('AWS_SECRET_ACCESS_KEY'),
        'region' => env('AWS_DEFAULT_REGION'),
        'bucket' => env('AWS_BUCKET'),
    ],

],

];

1 个答案:

答案 0 :(得分:0)

Documentation for File Storage

我使用此方法存在同样的问题,以存储我的上传图片网址

Storage::url ($file);

将其显示在src上的刀片中以供img