2016-07-24 3 views
0

私はlaravel + lumenベースのプロジェクトに取り組んでいます。私はLaravel 5.2とモバイルデバイスからのapiリクエストを処理するためのサブドメイン(api.domain.com)でWebベースのメインセットアップを行っています。ユーザーは、モバイルアプリケーションとウェブの両方から多くのファイル(主に画像)をアップロードします。そして、それらは公開フォルダには表示されませんストレージフォルダに格納されます。しかし、2つの問題があります。laravel(main setup)とlumen(sudomain setup)のストレージディレクトリにあるファイルを共有する方法

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

キャッシュとビューを保持するストレージフォルダ? – C2486

+0

@Rishiはい、私が作成するメディアフォルダだけを共有したい –

+0

あなたはURLで画像にアクセスできますか?別のプロジェクトから – C2486

答えて

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}','[email protected]'); 

あなたが呼ばれるファイルにアクセスするのには、次のURLからabc.jpgを言わせてでき/file/abc.jpg

2)シンボリックリンクの使用
ファイルが認証や処理を必要としない場合は、この方法はコントローラに関しては最高です。
ストレージディレクトリとパブリックディレクトリのサブフォルダ間にシンボリックリンクを作成します。コマンド以下のWindowsの使用において

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 

をあなたは、これが作成するスタンドアロンアプリケーションですCMDを使用したくない場合は、次のコマンドを使用することができますLinuxでは
シンボリックリンク:Symlinker

+0

申し訳ありません2つの設定の間でファイルを共有したいとは思いませんでした。この場合、シンボリックインクを使用することをお勧めします。パブリックディレクトリのパスを2番目のプロジェクトのストレージディレクトリに置き換えてください。 – jaysingkar

関連する問題