2017-06-15 15 views
3

私のウェブサイトをホストしているサーバーはlinksをサポートしていないので、php artisan storage:linkを実行して私のストレージディレクトリをパブリックディレクトリにリンクすることはできません。 filesystems.phpのディスク構成を再作成して、publicフォルダを直接参照しようとしましたが、どちらも機能していないようです。パブリックフォルダにLaravelライブラリを直接使用してファイルをアップロードする方法はありますか?それとも、PHPメソッドを使用する必要がありますか?前もって感謝します。Laravelのファイルをパブリックフォルダに直接アップロードする方法は?

答えて

9

あなたは、設定/ filesystems.phpで新しい記憶ディスクを作成することができます:私は、そこにすべての答えに加えて

if(!Storage::disk('public_uploads')->put($path, $file_content)) { 
    return false; 
} 
+0

? –

+1

$ pathにはもちろんファイル名が含まれている必要がありますが、1つ以上のサブフォルダも含めることができます。 – sunomad

+0

'$ path = $ request-> photo-> storeAs( 'images'、 'filename.jpg'、 'public_uploads');はアップロードされたファイルのカスタム名を使用します。ここにその文書があります。 https://laravel.com/docs/5.5/requests#storing-uploaded-files – Tharanga

0

フォームにmethod = "post" enctype = "multipart/form-data"を追加したこのホッピングを試してください。パブリックパス(.uploadedimages)がプロジェクトディレクトリにあるパブリックフォルダとアップロードされたイメージが置かれる場所に移動されることに注意してください。

public function store (Request $request) { 

    imageName = time().'.'.$request->image->getClientOriginalExtension(); 
    $request->image->move(public_path('/uploadedimages'), $imageName); 

    // then you can save $imageName to the database 

} 
0

になります。このような

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

そしてストアファイルをパブリックフォルダなので、別の保護レイヤーを追加することをお勧めします。

/files/images/cat.jpg

、あなたが確認することができるように/files/images/{image_name}のように見えるルートのようなあなたが保護を必要とするパブリックフォルダにありますファイルごとに

、それらへのアクセスを確認しますルートをください、特定のファイルに対するユーザー

あなただけ return response($full_server_filepath, 200)->header('Content-Type', 'image/jpeg');

を行い、正しい検証した後はどのように私はWELとしてファイルに名前を付けることができ、この方法を使用して少し難しく作業になりますが、はるかに安全

+0

ファイルを保護する必要がある場合、そのファイルをパブリックフォルダに保存する理由は何ですか? – sunomad

+0

ファイルを保護する必要がある場合、そのファイルを保存フォルダに保存する理由は何ですか?唯一の違いは、パブリックフォルダ内のファイルは、既定で格納場所の反対側に開くことです。つまり、選択した場所に関係なく、ファイルのアクセスレイヤーを書き込む必要があります。 –

+0

コントローラーフォルダーにモデルを保存したり、CSSフォルダー内のjavascriptファイルを保存したりするなど、私には悪いデザインプラクティスのように聞こえます。パブリックフォルダは、一般に公開されているファイル、つまり名前を保持するためのものです。 – sunomad

関連する問題