1

私はlaravel + lumenベースのプロジェクトに取り組んでいます。Laravel 5.2 で Web ベースになるメインのセットアップと、モバイル デバイスからの API リクエストを処理するためのサブドメイン (api.domain.com) を作成しています。ユーザーは、モバイル アプリケーションと Web の両方から大量のファイル (主に画像) をアップロードします。そして、それらは公開されないストレージ フォルダに保存されます。しかし、それから2つの問題があります。

  1. 両方のセットアップ間でストレージ フォルダーを共有するにはどうすればよいですか? この問題を解決するために、ファイルを別のサーバーに保管することを考えています。
  2. ストレージ フォルダは公開されないため、ファイルを取得するにはどうすればよいですか?
4

1 に答える 1

0

画像を読み取って返す特別なルートを持つことができます。たとえば、次のような単純な閉鎖ルート: ファイルのプライバシーに応じて、以下のいずれかを使用できる 2 つのアプローチがあります。

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で、この URL から/file/abc.jpg

2) シンボリック リンクを使用
する ファイルに認証や処理が必要ない場合は、この方法が最適であり、Controller に関しても簡単です
。ストレージ ディレクトリのサブフォルダーとの間のシンボリック リンクを作成します。公開ディレクトリ。
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

于 2016-07-24T21:24:03.750 に答える