首页 > 解决方案 > 从存储下载文档时出现问题,存储:链接不起作用 laravel 6

问题描述

我正在使用 Laravel 6,在我做过类似的事情之前,但使用 Laravel 7 并且它可以工作,两个项目的最大区别在于 Laravel 7 项目(仅上传没有 renombarlo 的图像)和 Laravel 6(我需要上传所有类型的文件,如 pdf、excel、word、power point)。

问题是我设法将其上传并将其存储在存储中,但是下载时,我无法访问这些文件,并且我使用了几乎相同的功能,我将保存文件的 url 保存在数据库中。

上传文件

    Current Tenant
    $pathUUI = (app(\Hyn\Tenancy\Environment::class)->website()->uuid);

    foreach ($data as $key => $value) {
        $saveName = time()."_opportunities_".$opportunity."_".$value->getClientOriginalName();

        // $pathLanding = Storage::disk('tenancy')->put($saveName,$pathUUI);
        // $url = Storage::disk('tenancy')->put($pathUUI,$value);
        $url = Storage::disk('tenancy')->putFileAs($pathUUI,$value,$saveName);

        File::create([
            'url'   => $url,
            'name'  => $saveName,
            'opportunity_id' => $opportunity,
            'activity_id' => $activity
        ]);
    }

下载文件

public function download($file){
    try {
        $public_path = public_path();
        $pathUUI = (app(\Hyn\Tenancy\Environment::class)->website()->uuid);
        $data = File::where('url','LIKE','%'.$file.'%')->first();
        
        $url = $public_path.'/storage/'.$data->url;

        if (!File::exists($url)) {
            abort(404);
        }

        $fileData = FileDocument::get($url);
        $type = FileDocument::mimeType($url);

        $response = Response::make($url, 200);
        $response->header("Content-Type",$type);

        return $reponse;
    } catch (\Throwable $th) {
        dd($th);
    }
}

Storage:link 存储什么都不做

我保存文件的存储文件夹 图像

文件系统.php


'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'),
        'url' => env('AWS_URL'),
    ],

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

'links' => [
    public_path('storage') => storage_path('app/tenancy/tenants'),
], 

标签: phplaravel

解决方案


推荐阅读