野村  陽一

野村 陽一

1634113154

LaravelでのAmazon S3にファイルをアップロード

ドする方法を学習します。s3に直接laravelをアップロードする方法を学びます。Laravelのs3バケットから画像を取得する方法について質問がある場合は、ソリューションを使用した簡単な例を示します。

 

このチュートリアルでは、laravelを使用してAmazons3サーバーにファイルと画像をアップロードする方法を段階的に説明します。この例は、laravel 6、laravel 7、laravel8バージョンで使用できます。

 

あなたはいくつかのステップに従う必要があります。また、s3バケットアカウントを作成してlaravelで使用する方法も紹介します。次に、簡単な画像アップロードの例を作成して、理解できるようにします。次の手順に従いましょう。

 

 

ステップ1:S3バケットを作成する

まず、バケットとユーザーを作成する必要があるので、次の手順に従います。

1.アマゾンウェブサービスコンソールに移動してログインします。

 

2.サービスリストからS3をクリックします

 

3. [バケットの作成]ボタンをクリックすると、次のフォームが表示されます。そこにバケット名を入力できます。

 

4. CreateIAMユーザーを作成します。ここをクリックしてIAMユーザーを作成します

 

5.以下に示すように、[ユーザーの作成]ボタンをクリックします。

 

6.次に、ユーザー名を追加し、アクセスタイプから「プログラムアクセス」を選択します。次に、[次へ]をクリックします。

 

7.次に、「既存のポリシーを直接添付」を選択し、権限リンクから「AmazonS3FullAccess」を選択します。

 

8.オプションなので、スキップして[次へ]をクリックできます。

 

9.ユーザーの詳細を表示して、[ユーザーの作成]ボタンをクリックできます。

 

10.これで、作成されたユーザーがリンクに表示されます。.envファイルに必要な「アクセスキーID」と「シークレットアクセスキー」があります。

 

ステップ2:Laravel8をインストールする

まず、ゼロから実行するため、以下のコマンドを使用して新しいlaravel 8バージョンのアプリケーションを取得する必要があります。ターミナルまたはコマンドプロンプトを開き、以下のコマンドを実行します。

composer create-project --prefer-dist laravel/laravel blog

ステップ3:Amazon S3Composerパッケージをインストールする

Amazon s3パッケージをインストールしていない場合は、次のコマンドを使用してs3composerパッケージをインストールする必要があります。

composer require --with-all-dependencies league/flysystem-aws-s3-v3 "^1.0"

ステップ4:AWSS3クレデンシャルを設定する

次に、次のように.envファイルにawsクレデンシャルを追加する必要があります。

.env

AWS_ACCESS_KEY_ID=AKIAVAEWWDTDY...
AWS_SECRET_ACCESS_KEY=Zp/wgwj46SAC....
AWS_DEFAULT_REGION=us-east-2
AWS_BUCKET=itsolutionstuff-bucket
AWS_USE_PATH_STYLE_ENDPOINT=fals

ステップ5:ルートを作成する

次のステップでは、web.phpファイルに新しい2つのルートを追加します。フォームを生成するための1つのルートとpostメソッドのための別のルートそれでは、以下にリストされているように両方のルートを簡単に作成しましょう。

ルート/web.php

<?php
  
use Illuminate\Support\Facades\Route;
  
use App\Http\Controllers\ImageUploadController;
  
  
Route::get('image-upload', [ ImageUploadController::class, 'imageUpload' ])->name('image.upload');
Route::post('image-upload', [ ImageUploadController::class, 'imageUploadPost' ])->name('image.upload.post');

ステップ6:ImageUploadControllerを作成する

3番目のステップでは、新しいImageUploadControllerを作成する必要があります。ここでは、2つのメソッドimageUpload()とimageUploadPost()を作成する必要があります。したがって、1つのメソッドがgetメソッドを処理し、別のメソッドをpostに処理します。それでは、コードを追加しましょう。

app / Http / Controllers / ImageUploadController.php

<?php
  
namespace App\Http\Controllers;
  
use Illuminate\Http\Request;
  
class ImageUploadController extends Controller
{
     /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function imageUpload()
    {
        return view('imageUpload');
    }
    
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function imageUploadPost(Request $request)
    {
        $request->validate([
            'image' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
        ]);
    
        $imageName = time().'.'.$request->image->extension();  
     
        $path = Storage::disk('s3')->put('images', $request->image);
        $path = Storage::disk('s3')->url($path);
  
        /* Store $imageName name in DATABASE from HERE */
    
        return back()
            ->with('success','You have successfully upload image.')
            ->with('image', $path); 
    }
}

ステップ7:ブレードファイルを作成する

最後のステップで、imageUpload.blade.phpファイルを作成する必要があります。このファイルでは、ファイル入力ボタンを使用してフォームを作成します。したがって、以下をコピーして、そのファイルを配置します。

resources / views / imageUpload.blade.php

<!DOCTYPE html>
<html>
<head>
    <title>laravel File Uploading with Amazon S3 - ItSolutionStuff.com.com</title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
</head>
    
<body>
<div class="container">
     
    <div class="panel panel-primary">
      <div class="panel-heading"><h2>laravel File Uploading with Amazon S3 - ItSolutionStuff.com.com</h2></div>
      <div class="panel-body">
     
        @if ($message = Session::get('success'))
        <div class="alert alert-success alert-block">
            <button type="button" class="close" data-dismiss="alert">×</button>
                <strong>{{ $message }}</strong>
        </div>
        <img src="{{ Session::get('image') }}">
        @endif
    
        @if (count($errors) > 0)
            <div class="alert alert-danger">
                <strong>Whoops!</strong> There were some problems with your input.
                <ul>
                    @foreach ($errors->all() as $error)
                        <li>{{ $error }}</li>
                    @endforeach
                </ul>
            </div>
        @endif
    
        <form action="{{ route('image.upload.post') }}" method="POST" enctype="multipart/form-data">
            @csrf
            <div class="row">
    
                <div class="col-md-6">
                    <input type="file" name="image" class="form-control">
                </div>
     
                <div class="col-md-6">
                    <button type="submit" class="btn btn-success">Upload</button>
                </div>
     
            </div>
        </form>
    
      </div>
    </div>
</div>
</body>
  
</html>

これで、実行して確認できます。

これで、例を実行する準備ができました。次のコマンドを実行して、すばやく実行します。

php artisan serve

これで、ブラウザで次のURLを開くことができます。

localhost:8000/image-upload

出力:

S3アップロード画像:

私はそれがあなたを助けることができることを願っています...
 

リンク: https://www.itsolutionstuff.com/post/laravel-amazon-s3-file-upload-tutorialexample.html

#laravel #aws 

What is GEEK

Buddha Community

LaravelでのAmazon S3にファイルをアップロード
野村  陽一

野村 陽一

1634113154

LaravelでのAmazon S3にファイルをアップロード

ドする方法を学習します。s3に直接laravelをアップロードする方法を学びます。Laravelのs3バケットから画像を取得する方法について質問がある場合は、ソリューションを使用した簡単な例を示します。

 

このチュートリアルでは、laravelを使用してAmazons3サーバーにファイルと画像をアップロードする方法を段階的に説明します。この例は、laravel 6、laravel 7、laravel8バージョンで使用できます。

 

あなたはいくつかのステップに従う必要があります。また、s3バケットアカウントを作成してlaravelで使用する方法も紹介します。次に、簡単な画像アップロードの例を作成して、理解できるようにします。次の手順に従いましょう。

 

 

ステップ1:S3バケットを作成する

まず、バケットとユーザーを作成する必要があるので、次の手順に従います。

1.アマゾンウェブサービスコンソールに移動してログインします。

 

2.サービスリストからS3をクリックします

 

3. [バケットの作成]ボタンをクリックすると、次のフォームが表示されます。そこにバケット名を入力できます。

 

4. CreateIAMユーザーを作成します。ここをクリックしてIAMユーザーを作成します

 

5.以下に示すように、[ユーザーの作成]ボタンをクリックします。

 

6.次に、ユーザー名を追加し、アクセスタイプから「プログラムアクセス」を選択します。次に、[次へ]をクリックします。

 

7.次に、「既存のポリシーを直接添付」を選択し、権限リンクから「AmazonS3FullAccess」を選択します。

 

8.オプションなので、スキップして[次へ]をクリックできます。

 

9.ユーザーの詳細を表示して、[ユーザーの作成]ボタンをクリックできます。

 

10.これで、作成されたユーザーがリンクに表示されます。.envファイルに必要な「アクセスキーID」と「シークレットアクセスキー」があります。

 

ステップ2:Laravel8をインストールする

まず、ゼロから実行するため、以下のコマンドを使用して新しいlaravel 8バージョンのアプリケーションを取得する必要があります。ターミナルまたはコマンドプロンプトを開き、以下のコマンドを実行します。

composer create-project --prefer-dist laravel/laravel blog

ステップ3:Amazon S3Composerパッケージをインストールする

Amazon s3パッケージをインストールしていない場合は、次のコマンドを使用してs3composerパッケージをインストールする必要があります。

composer require --with-all-dependencies league/flysystem-aws-s3-v3 "^1.0"

ステップ4:AWSS3クレデンシャルを設定する

次に、次のように.envファイルにawsクレデンシャルを追加する必要があります。

.env

AWS_ACCESS_KEY_ID=AKIAVAEWWDTDY...
AWS_SECRET_ACCESS_KEY=Zp/wgwj46SAC....
AWS_DEFAULT_REGION=us-east-2
AWS_BUCKET=itsolutionstuff-bucket
AWS_USE_PATH_STYLE_ENDPOINT=fals

ステップ5:ルートを作成する

次のステップでは、web.phpファイルに新しい2つのルートを追加します。フォームを生成するための1つのルートとpostメソッドのための別のルートそれでは、以下にリストされているように両方のルートを簡単に作成しましょう。

ルート/web.php

<?php
  
use Illuminate\Support\Facades\Route;
  
use App\Http\Controllers\ImageUploadController;
  
  
Route::get('image-upload', [ ImageUploadController::class, 'imageUpload' ])->name('image.upload');
Route::post('image-upload', [ ImageUploadController::class, 'imageUploadPost' ])->name('image.upload.post');

ステップ6:ImageUploadControllerを作成する

3番目のステップでは、新しいImageUploadControllerを作成する必要があります。ここでは、2つのメソッドimageUpload()とimageUploadPost()を作成する必要があります。したがって、1つのメソッドがgetメソッドを処理し、別のメソッドをpostに処理します。それでは、コードを追加しましょう。

app / Http / Controllers / ImageUploadController.php

<?php
  
namespace App\Http\Controllers;
  
use Illuminate\Http\Request;
  
class ImageUploadController extends Controller
{
     /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function imageUpload()
    {
        return view('imageUpload');
    }
    
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function imageUploadPost(Request $request)
    {
        $request->validate([
            'image' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
        ]);
    
        $imageName = time().'.'.$request->image->extension();  
     
        $path = Storage::disk('s3')->put('images', $request->image);
        $path = Storage::disk('s3')->url($path);
  
        /* Store $imageName name in DATABASE from HERE */
    
        return back()
            ->with('success','You have successfully upload image.')
            ->with('image', $path); 
    }
}

ステップ7:ブレードファイルを作成する

最後のステップで、imageUpload.blade.phpファイルを作成する必要があります。このファイルでは、ファイル入力ボタンを使用してフォームを作成します。したがって、以下をコピーして、そのファイルを配置します。

resources / views / imageUpload.blade.php

<!DOCTYPE html>
<html>
<head>
    <title>laravel File Uploading with Amazon S3 - ItSolutionStuff.com.com</title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
</head>
    
<body>
<div class="container">
     
    <div class="panel panel-primary">
      <div class="panel-heading"><h2>laravel File Uploading with Amazon S3 - ItSolutionStuff.com.com</h2></div>
      <div class="panel-body">
     
        @if ($message = Session::get('success'))
        <div class="alert alert-success alert-block">
            <button type="button" class="close" data-dismiss="alert">×</button>
                <strong>{{ $message }}</strong>
        </div>
        <img src="{{ Session::get('image') }}">
        @endif
    
        @if (count($errors) > 0)
            <div class="alert alert-danger">
                <strong>Whoops!</strong> There were some problems with your input.
                <ul>
                    @foreach ($errors->all() as $error)
                        <li>{{ $error }}</li>
                    @endforeach
                </ul>
            </div>
        @endif
    
        <form action="{{ route('image.upload.post') }}" method="POST" enctype="multipart/form-data">
            @csrf
            <div class="row">
    
                <div class="col-md-6">
                    <input type="file" name="image" class="form-control">
                </div>
     
                <div class="col-md-6">
                    <button type="submit" class="btn btn-success">Upload</button>
                </div>
     
            </div>
        </form>
    
      </div>
    </div>
</div>
</body>
  
</html>

これで、実行して確認できます。

これで、例を実行する準備ができました。次のコマンドを実行して、すばやく実行します。

php artisan serve

これで、ブラウザで次のURLを開くことができます。

localhost:8000/image-upload

出力:

S3アップロード画像:

私はそれがあなたを助けることができることを願っています...
 

リンク: https://www.itsolutionstuff.com/post/laravel-amazon-s3-file-upload-tutorialexample.html

#laravel #aws