如何在laravel(主要设置)中共享存储目录中的文件&流明(sudomain设置)

时间:2016-07-24 14:04:22

标签: php laravel-5.2 lumen-5.2

我正在开发基于laravel +流明的项目。我正在制作主要设置,它将基于Web的Laravel 5.2和子域(api.domain.com)来处理来自移动设备的api请求。用户将从移动应用程序和Web上传大量文件(主要是图像)。它们将存储在不会公开显示的存储文件夹中。但是有两个问题。

  1. 如何在两个设置之间共享存储文件夹?我正在考虑将文件保存在单独的服务器上以解决此问题。
  2. 由于存储文件夹不会公开显示,我该如何检索文件?

1 个答案:

答案 0 :(得分:0)

您可以使用特殊路线读取和返回图像。例如一个简单的闭包路线,如下所示: 有两种方法取决于您可以使用以下任何一种文件的隐私。

1)使用专用控制器提供图像:
控制器:

<?php

namespace App\Http\Controllers;

use Illuminate\Support\Facades\Storage;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Response;


class FileController extends Controller
{
    public function __construct()
    {
        $this->middleware('auth');
    }

    public static function getFile($fileName){
        $path = storage_path() . '/' . $filename;

        if(File::exists($path)){
            return Response::download($path);
        }
        else
            abort(404);
    }
}

路线

Route::get('/file/{file_name}','FileController@getFile');

现在,您可以从此网址abc.jpg中访问名为/file/abc.jpg的文件
2)使用符号链接
如果您的文件不需要任何身份验证或任何处理,则此方法最适合控制器 在存储目录中的子文件夹和公共目录之间创建符号链接 在linux中,您可以使用以下命令:

ln -s /path_to_storage_directory/file /path_to_public_directory/files

在Windows中使用以下命令:

mklink /j /path_to_storage_directory/file /path_to_public_directory/files

在Windows中,如果您不想使用CMD,则这是一个独立的应用程序来创建符号链接:Symlinker