web-dev-qa-db-ja.com

Laravel=のファイルをパブリックフォルダーに直接アップロードする方法は?

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

14
Fabiotk

config/filesystems.phpで新しいストレージディスクを作成できます。

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

そして、このようなファイルを保存します:

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

\Illuminate\Http\UploadedFileクラスのメソッドにディスクを渡すことができます:

$file = request()->file('uploadFile');
$file->store('toPath', ['disk' => 'public']);

または、新しいファイルシステムディスクを作成して、そのディスクに保存できます。

config/filesystems.phpに新しいストレージディスクを作成できます。

'my_files' => [
    'driver' => 'local',
    'root'   => public_path() . '/myfiles',
],

コントローラー内:

$file = request()->file('uploadFile');
$file->store('toPath', ['disk' => 'my_files']);
2
Inoyatulloh

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

}
1
Willie Mwewa

代替として、
let laravel= /storage/appフォルダー。

ファイルを読みたい場合は、$publicPath = '../storage/app/'.$path;

0
Agus

そこでのすべての回答に加えて、パブリックフォルダーであるため、別の保護レイヤーを追加することをお勧めします。

保護が必要なパブリックフォルダーにあるすべてのファイルについて、次のようにファイルへのアクセスを確認するルートを実行します。

_/files/images/cat.jpg_

_/files/images/{image_name}_のように見えるルートは、指定されたファイルに対してユーザーを検証できるようにします。

正しい検証の後、あなたはただreturn response($full_server_filepath, 200)->header('Content-Type', 'image/jpeg');するだけです

作業は少し難しくなりますが、はるかに安全です