2016-05-04 16 views
3

まず、私は悪い英語を残念に思っています。ファイルをアップロードするクラスStorage Laravel 5.2

クラスStorageを使用して、ドライバからファイル/イメージをアップロードしたいとします。私はすべてのファイル/イメージが私のpublic/imgディレクトリにアップロード/移動されることを望みます。私は、私の見解でForm::file('img')を使用して、私のポストコントローラ上で、私はこの

$img = Input::file('img'); 
    if ($img !== null) { 
     $filename  = $img->getClientOriginalName(); 
     Storage::disk('uploads')->put('filename', $filename); 

     $jenis->img  = $filename; 
    } 

と私のconfig/filesystemに私はこの

'uploads' => [ 
     'driver' => 'local', 
     'root' => public_path() . '/img', 
    ], 

しかし、何も私のpublic/imgディレクトリに起こり、無の書き込みを書きます新しいファイル/画像がそこにあります。 私のコードで何が間違っているのを助けることができますか? と私はあなたがlaravelでファイル/画像をアップロードする方法について別の良い方法で助けてくれることを願っています。

+0

ヘルプ[Mr.アレックス](http://stackoverflow.com/users/2781542/jacurtis) –

答えて

6

ファイルを保存していないと思われます。

これを試してみてください:私のファイルシステムファイルで

Storage::disk('uploads') -> put($filename, file_get_contents($img -> getRealPath())); 
+0

ありがとう[Matt](https://stackoverflow.com/users/625407/matt-mcdonald) それは動作しますが、私は本当にundestand何が起こるかそのput()に。私に説明することはできますか?ありがとう –

+1

@DarmaKurniawanHarefa 'put'に渡される最初の引数は、ファイルのフルパスです(config内のデフォルトフォルダを設定したので、これはサブフォルダに入れたくない場合にファイル名になります) )。 2番目の引数はファイルの内容です。したがって、PHPの 'file_get_contents'関数を使用すると、ファイルの内容をStorage' put'メソッドに渡しています。入力ファイルの 'getRealPath'メソッドは、サーバにアップロードされた一時ファイルの実際のパスを渡します。 –

+0

完璧!ありがとう:D – Rkey

0

を、私はこのように私のイメージディレクトリを設定します。

'uploads' => [ 
    'driver' => 'local', 
    'root' => public_path("/img"), 
], 

私はあなたがあなたの方法を使用することができますが、別のポイントだと思います。

あなたがファイルを使用する必要があり、あなたのビューからファイルを取得するには:: Laravel機能取得:これにより

$filename = $img->getClientOriginalName(); 
Storage::disk('uploads')->put($filename, \File::get($file)); 

は十分だろう、あなたは、ファイルシステム内の指定したディレクトリにアップロードされたファイルの名前でファイルを保存します。

+0

ありがとう[Juan](http://stackoverflow.com/users/5560051/juan-manuel-barea-mart%c3%adnez)しかしクラスファイルdosnt私の仕事。 Fileクラスを定義/使用する必要がありますか? –

+0

これは必要ではありませんが、この方法で定義してみてください:あなたのコントローラー内の 'Illuminate/Contracts/Filesystem/Filesystem'を使用してください。とにかく、どのようなエラーが表示されますか? –

+0

\ File :: get($ file);そのファイルかimgですか? –

関連する問題