2017-12-01 7 views
0

ファイルシステム:Laravelドライバ

'disks' => [ 

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

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

     'shares' => [ 
      'driver' => 'local', 
      'root' => public_path('shares'), 
      'visibility' => 'public', 
     ], 

     's3' => [ 
      'driver' => 's3', 
      'key' => env('AWS_KEY'), 
      'secret' => env('AWS_SECRET'), 
      'region' => env('AWS_REGION'), 
      'bucket' => env('AWS_BUCKET'), 
     ], 

    ], 

マイコントローラ:

public function store(Request $request) { 
     $rules = [ 
      'user_id'   => 'required|exists:users,id', 
      'patient_case_id' => 'required|exists:patient_cases,id', 
      'shared_with'  => 'required|exists:users,id', 
     ]; 

     $this->validate($request, $rules); 

     $data = $request->all(); 
     $data['shared_file'] = $request->file('file')->store('shares/'.$data["user_id"], $data["shared_file"]->getClientOriginalName()); 

     $newShare = WayneRooney::create($data); 
     return $this->showOne($newShare, 201); 
    } 

私は店のメソッド空のままにした場合、それが動作し、ユニークで公共のパスに共有フォルダにファイルを書き込みid。しかし、私はshare/{USER_ID}フォルダの元の名前でファイルを書きたいと思っています。

どうすればいいですか?

+1

'store(...) 'の代わりに' storeAs(...) 'を使用しましたか? Laravelのどのバージョンを使用していますか? – sisve

+0

@sisveはい、私はそれを発見:)あなたはsisveありがとう。あなたが望むなら、答えとして書くことができます – Nevermore

+1

'putFileAs'または' storeAs() 'を試してみませんか? –

答えて

1

あなたはその引数としてパスを受けstoreAs方法、ファイル名、および(オプション)ディスクを使用することができ、自動的に保存されたファイルに割り当てられるファイル名を好きではないでしょう場合:

$path = $request->file('avatar')->storeAs(
    'avatars', $request->user()->id 
); 

あなたはまた、上記の例と同じファイル操作を実行しますストレージファサード、上putFileAs方法を使用することができます:

$path = Storage::putFileAs(
    'avatars', $request->file('avatar'), $request->user()->id 
); 

・ホープこれはあなたの問題を修正しました!

関連する問題