2017-02-16 12 views
2

経由でファイルを格納するために使用するPUTFILE()は、私は、ユーザーが名前を持っている彼らの特定のフォルダにダウンロードしたファイルのURLを送ることができるAPIに取り組んでいますユーザー名と同じですコールURL

まず私は、認証されたユーザーのユーザー名と特定のディレクトリと同じ名前を保持userという名前の設定をファイルシステムに新しいディスクオプションを追加しました。このように:

ユーザーが認証
'disks' => [ 
     'user' => [ 
      'driver' => 'local', 
      'root' => NULL, //set on the fly after user authentication. (LogAuthenticated.php) 
     ], 
     'local' => [ 
      'driver' => 'local', 
      'root' => public_path('files'), 
     ] 
    ] 

は、私がIlluminate\Auth\Events\Authenticatedイベントのリスナーに認証されたユーザ名と同じ名前のディレクトリを作成し、このようなfilesystems.disks.user.rootコンフィグ設定:私は、ファイルを保存したい今

public function handle (Authenticated $event) 
    { 
     $username = $event->user->username; 

     if (!Storage::exists($username)) { 
      Storage::makeDirectory($username, 0775); 
     } 
     Config::set('filesystems.disks.user.root', public_path('files/' . $username)); 
    } 

をユーザーが提供した外部URLから は、ファイルがjpg形式を持っていると私は一意の名前でユーザーディレクトリにphotoディレクトリにそれを保存するとします。

Storage::disk('user')->putFile('photos', fopen($photo, 'r')); 

しかし、私は、コードを実行すると、このエラーを得た:そのために私はこれを書いた

Call to a member function hashName() on string 

私は、このエラーが何であるかを知っている、なぜ発生しません。もし誰かが私を助けてください知っている。

答えて

1

documentationによると、あなたが使用できます。

Storage::disk('user')->putFile('photos', new \Illuminate\Http\File($photo)); 

を写真がURLである場合、あなたは試みることができる:

Storage::disk('user')->put('file.jpg', file_get_contents($photo)); 
+0

私は 'ストレージ::ディスク( 'ユーザー')を試してみました - > PUTFILE( '写真'、新しいファイル($写真)); 'が、この場合には、このエラーました:'未定義のメソッドを照らし\\ \\サポートファサード\\ファイルへの呼び出し:: hashName() '' $ –

+0

のphoto'ですがURL文字列。 'new File()'はこのタイプのパラメータを受け入れますか? A.B.Developer OK、URL –

+0

- >置く( 'file.jpg'、のfile_get_contents($写真));'働いていました。しかし:私はlaravelがファイルにUUID名を割り当てたい。この場合には、私はPUT()メソッドの最初のパラメータでファイル名を指定する必要があります。どうやってやるの ? –

関連する問題