ウェブサイトをホストしているサーバーはlinks
をサポートしていないため、php artisan storage:link
ストレージディレクトリをパブリックディレクトリにリンクします。 filesystems.phpでディスク構成を再作成してpublic
フォルダーを直接参照しようとしましたが、どちらも機能していないようです。 Laravelライブラリを直接パブリックフォルダに使用してファイルをアップロードする方法はありますか、それともphpメソッドを使用する必要がありますか?事前に感謝します。
config/filesystems.php
で新しいストレージディスクを作成できます。
'public_uploads' => [
'driver' => 'local',
'root' => public_path() . '/uploads',
],
そして、このようなファイルを保存します:
if(!Storage::disk('public_uploads')->put($path, $file_content)) {
return false;
}
\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']);
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
}
代替として、
let laravel= /storage/app
フォルダー。
ファイルを読みたい場合は、$publicPath = '../storage/app/'.$path;
そこでのすべての回答に加えて、パブリックフォルダーであるため、別の保護レイヤーを追加することをお勧めします。
保護が必要なパブリックフォルダーにあるすべてのファイルについて、次のようにファイルへのアクセスを確認するルートを実行します。
_/files/images/cat.jpg
_
_/files/images/{image_name}
_のように見えるルートは、指定されたファイルに対してユーザーを検証できるようにします。
正しい検証の後、あなたはただreturn response($full_server_filepath, 200)->header('Content-Type', 'image/jpeg');
するだけです
作業は少し難しくなりますが、はるかに安全です