CodeigniterでAmazonAWSS3バケットにファイルをアップロードする

このチュートリアルでは、PHPcodeigniterを使用してAmazonawss3バケットフォルダーにファイルをアップロードする方法を学習します。

このチュートリアルでは、ファイルと画像のフォームを作成します。また、このフォームには、タイプがファイルになる入力フィールドが必要です。ここでは、任意のファイルを選択できます。この後、検証ルールを使用してサーバー上でこのファイルを検証します。次に、PHPcodeigniterを使用してファイルをamazonawss3バケットに保存/アップロードします

CodeigniterがAmazonAWSS3バケットにファイルをアップロードする

  • ステップ1-Codeigniterの最新版をダウンロードする
  • ステップ2–基本構成
  • ステップ3– Amazon AWSS3バケットを作成する
  • ステップ4– AWS S3SDKをインストールする
  • ステップ5–コントローラーを作成する
  • ステップ6–ビューを作成する
  • ステップ7–開発サーバーを起動します

ステップ1-Codeigniterプロジェクトをダウンロードする

このステップでは、Codeigniter 4の最新バージョンをダウンロードします。このリンクにアクセスします。https://codeigniter.com/download Codeigniter 4の新しいセットアップをダウンロードし、ローカルシステムxampp / htdocs /でセットアップを解凍します。そして、ダウンロードフォルダ名「デモ」を変更します

ステップ2–基本構成

app / config / app.phpファイルでいくつかの基本構成をセットアップするので、application / config / config.phpに移動して、このファイルをテキストエディターで開きます。

このようにベースURLを設定します

public $baseURL = 'http://localhost:8080';
To
public $baseURL = 'http://localhost/demo/';

ステップ3– Amazon AWSS3バケットを作成する

Amazon awss3バケットを作成します。したがって、以下の手順に従ってawss3バケットアカウントを作成する必要があります。

Amazon awss3バケットアカウントを設定します。そのため 、画像/ファイルを保存するには、amazons3でアカウントを作成する必要があります。まず、Amazonにサインアップする必要があります。

サインアップするには、このリンクをたどる必要があります   正常に署名した後、バケットを作成できます。理解を深めるために、以下の画像をご覧ください。

AmazonS3クラウドストレージにバケットアカウントを作成する

AmazonS3クラウドストレージにバケットアカウントを作成する

次に、バケットポリシーを作成する必要があるため、このリンクに移動する必要があります。そして、ページはこのようになります。

このようなページが表示されます。

バケットポリシーを作成し、バケットポリシーにコピーして貼り付けます。下の画像をご覧ください。

AmazonS3バケットポリシー

今、あなたは行きます 、ここで 私たちのアクセスキーIDとシークレットアクセスキーを取得します。

ステップ4– AWS S3SDKをインストールする

ターミナルで次のコマンドを実行して、aws s3 PHPSDKをインストールします。

composer require aws/aws-sdk-php

ステップ5–コントローラーを作成する

コントローラを作成します。したがって、app / Controllersにアクセスして、コントローラー名Form.phpを作成します。このコントローラーで、いくつかのメソッド/関数を作成します。以下に示すように

  • Index()–これはファイル/画像アップロードフォームを表示するために使用されます。
  • Store()–これは、サーバー側でフォームファイル/画像を検証し、MySQLデータベースとフォルダーに保存するために使用されます。
<?php namespace App\Controllers;
 
use CodeIgniter\Controller;
 
require 'vendor/autoload.php';
   
use Aws\S3\S3Client;
 
class Form extends Controller
{
    public function index()
    {    
         return view('form');
    }
 
   public function store()
   {  
 
     helper(['form', 'url']);
         
 
        $validated = $this->validate([
            'file' => [
                'uploaded[file]',
                'mime_in[file,image/jpg,image/jpeg,image/gif,image/png]',
                'max_size[file,4096]',
            ],
        ]);
 
        $msg = 'Please select a valid file';
  
        if ($validated) {
            $avatar = $this->request->getFile('file');
            $avatar->move(WRITEPATH . 'uploads');
 
          $data = [
 
            'name' =>  $avatar->getClientName(),
            'type'  => $avatar->getClientMimeType()
          ];
 
          // Instantiate an Amazon S3 client.
          $s3Client = new S3Client([
              'version' => 'latest',
              'region'  => 'YOUR_AWS_REGION',
              'credentials' => [
                  'key'    => 'ACCESS_KEY_ID',
                  'secret' => 'SECRET_ACCESS_KEY'
              ]
          ]);
 
          $bucket = 'YOUR_BUCKET_NAME';
          $file_Path = __DIR__ . '/uploads/'. $filename;
          $key = basename($file_Path);
 
          try {
              $result = $s3Client->putObject([
                  'Bucket' => $bucket,
                  'Key'    => $key,
                  'Body'   => fopen($file_Path, 'r'),
                  'ACL'    => 'public-read', // make file 'public'
              ]);
            $msg = 'File has been uploaded';
          } catch (Aws\S3\Exception\S3Exception $e) {
              //$msg = 'File has been uploaded';
              echo $e->getMessage();
          }
          $msg = 'File has been uploaded';
        }
 
       return redirect()->to( base_url('public/index.php/form') )->with('msg', $msg);
 
    }
}

重要な注意:-コントローラーファイルにawsバケットキー、シークレット、リージョン、バケット名を追加してください。

ステップ6–ビューを作成する

アップロードファイルのビューを作成します。したがって、application / views /ディレクトリにアクセスし、このディレクトリ内にform.phpファイルを作成します。次のHTMLをファイルに更新します。

<!DOCTYPE html>
<html>
<head>
  <title>Codeigniter Upload File to Amazon AWS S3 Bucket - Tutsmake.com</title>
 <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
 
</head>
<body>
 <div class="container">
    <br>
     
    <?php if (session('msg')) : ?>
        <div class="alert alert-info alert-dismissible">
            <?= session('msg') ?>
            <button type="button" class="close" data-dismiss="alert"><span>×</span></button>
        </div>
    <?php endif ?>
 
    <div class="row">
      <div class="col-md-9">
        <form action="<?php echo base_url('public/index.php/form/store');?>" name="ajax_form" id="ajax_form" method="post" accept-charset="utf-8" enctype="multipart/form-data">
 
          <div class="form-group">
            <label for="formGroupExampleInput">Name</label>
            <input type="file" name="file" class="form-control" id="file">
          </div> 
 
          <div class="form-group">
           <button type="submit" id="send_form" class="btn btn-success">Submit</button>
          </div>
          
        </form>
      </div>
 
    </div>
  
</div>
</body>
</html>

以下の行は、Webページにエラーメッセージを表示します。

<?php if (session('msg')) : ?>
     <div class="alert alert-info alert-dismissible">
         <?= session('msg') ?>
         <button type="button" class="close" data-dismiss="alert"><span>×</span></button>
     </div>
 <?php endif ?>

ステップ7–開発サーバーを起動します

開発サーバーを起動するには、ブラウザに移動してURLの下を押します。

http://localhost/demo/public/index.php/form

結論

CodeIgniter4ファイルイメージを検証付きのawss3バケットにアップロードします。このチュートリアルでは、PHPcodeigniterを使用してAmazonawss3バケットにファイルをアップロードする方法を学習しました。

リンク: https://www.tutsmake.com/upload-file-to-amazon-aws-s3-bucket-in-codeigniter/

#aws 

What is GEEK

Buddha Community

CodeigniterでAmazonAWSS3バケットにファイルをアップロードする

CodeigniterでAmazonAWSS3バケットにファイルをアップロードする

このチュートリアルでは、PHPcodeigniterを使用してAmazonawss3バケットフォルダーにファイルをアップロードする方法を学習します。

このチュートリアルでは、ファイルと画像のフォームを作成します。また、このフォームには、タイプがファイルになる入力フィールドが必要です。ここでは、任意のファイルを選択できます。この後、検証ルールを使用してサーバー上でこのファイルを検証します。次に、PHPcodeigniterを使用してファイルをamazonawss3バケットに保存/アップロードします

CodeigniterがAmazonAWSS3バケットにファイルをアップロードする

  • ステップ1-Codeigniterの最新版をダウンロードする
  • ステップ2–基本構成
  • ステップ3– Amazon AWSS3バケットを作成する
  • ステップ4– AWS S3SDKをインストールする
  • ステップ5–コントローラーを作成する
  • ステップ6–ビューを作成する
  • ステップ7–開発サーバーを起動します

ステップ1-Codeigniterプロジェクトをダウンロードする

このステップでは、Codeigniter 4の最新バージョンをダウンロードします。このリンクにアクセスします。https://codeigniter.com/download Codeigniter 4の新しいセットアップをダウンロードし、ローカルシステムxampp / htdocs /でセットアップを解凍します。そして、ダウンロードフォルダ名「デモ」を変更します

ステップ2–基本構成

app / config / app.phpファイルでいくつかの基本構成をセットアップするので、application / config / config.phpに移動して、このファイルをテキストエディターで開きます。

このようにベースURLを設定します

public $baseURL = 'http://localhost:8080';
To
public $baseURL = 'http://localhost/demo/';

ステップ3– Amazon AWSS3バケットを作成する

Amazon awss3バケットを作成します。したがって、以下の手順に従ってawss3バケットアカウントを作成する必要があります。

Amazon awss3バケットアカウントを設定します。そのため 、画像/ファイルを保存するには、amazons3でアカウントを作成する必要があります。まず、Amazonにサインアップする必要があります。

サインアップするには、このリンクをたどる必要があります   正常に署名した後、バケットを作成できます。理解を深めるために、以下の画像をご覧ください。

AmazonS3クラウドストレージにバケットアカウントを作成する

AmazonS3クラウドストレージにバケットアカウントを作成する

次に、バケットポリシーを作成する必要があるため、このリンクに移動する必要があります。そして、ページはこのようになります。

このようなページが表示されます。

バケットポリシーを作成し、バケットポリシーにコピーして貼り付けます。下の画像をご覧ください。

AmazonS3バケットポリシー

今、あなたは行きます 、ここで 私たちのアクセスキーIDとシークレットアクセスキーを取得します。

ステップ4– AWS S3SDKをインストールする

ターミナルで次のコマンドを実行して、aws s3 PHPSDKをインストールします。

composer require aws/aws-sdk-php

ステップ5–コントローラーを作成する

コントローラを作成します。したがって、app / Controllersにアクセスして、コントローラー名Form.phpを作成します。このコントローラーで、いくつかのメソッド/関数を作成します。以下に示すように

  • Index()–これはファイル/画像アップロードフォームを表示するために使用されます。
  • Store()–これは、サーバー側でフォームファイル/画像を検証し、MySQLデータベースとフォルダーに保存するために使用されます。
<?php namespace App\Controllers;
 
use CodeIgniter\Controller;
 
require 'vendor/autoload.php';
   
use Aws\S3\S3Client;
 
class Form extends Controller
{
    public function index()
    {    
         return view('form');
    }
 
   public function store()
   {  
 
     helper(['form', 'url']);
         
 
        $validated = $this->validate([
            'file' => [
                'uploaded[file]',
                'mime_in[file,image/jpg,image/jpeg,image/gif,image/png]',
                'max_size[file,4096]',
            ],
        ]);
 
        $msg = 'Please select a valid file';
  
        if ($validated) {
            $avatar = $this->request->getFile('file');
            $avatar->move(WRITEPATH . 'uploads');
 
          $data = [
 
            'name' =>  $avatar->getClientName(),
            'type'  => $avatar->getClientMimeType()
          ];
 
          // Instantiate an Amazon S3 client.
          $s3Client = new S3Client([
              'version' => 'latest',
              'region'  => 'YOUR_AWS_REGION',
              'credentials' => [
                  'key'    => 'ACCESS_KEY_ID',
                  'secret' => 'SECRET_ACCESS_KEY'
              ]
          ]);
 
          $bucket = 'YOUR_BUCKET_NAME';
          $file_Path = __DIR__ . '/uploads/'. $filename;
          $key = basename($file_Path);
 
          try {
              $result = $s3Client->putObject([
                  'Bucket' => $bucket,
                  'Key'    => $key,
                  'Body'   => fopen($file_Path, 'r'),
                  'ACL'    => 'public-read', // make file 'public'
              ]);
            $msg = 'File has been uploaded';
          } catch (Aws\S3\Exception\S3Exception $e) {
              //$msg = 'File has been uploaded';
              echo $e->getMessage();
          }
          $msg = 'File has been uploaded';
        }
 
       return redirect()->to( base_url('public/index.php/form') )->with('msg', $msg);
 
    }
}

重要な注意:-コントローラーファイルにawsバケットキー、シークレット、リージョン、バケット名を追加してください。

ステップ6–ビューを作成する

アップロードファイルのビューを作成します。したがって、application / views /ディレクトリにアクセスし、このディレクトリ内にform.phpファイルを作成します。次のHTMLをファイルに更新します。

<!DOCTYPE html>
<html>
<head>
  <title>Codeigniter Upload File to Amazon AWS S3 Bucket - Tutsmake.com</title>
 <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
 
</head>
<body>
 <div class="container">
    <br>
     
    <?php if (session('msg')) : ?>
        <div class="alert alert-info alert-dismissible">
            <?= session('msg') ?>
            <button type="button" class="close" data-dismiss="alert"><span>×</span></button>
        </div>
    <?php endif ?>
 
    <div class="row">
      <div class="col-md-9">
        <form action="<?php echo base_url('public/index.php/form/store');?>" name="ajax_form" id="ajax_form" method="post" accept-charset="utf-8" enctype="multipart/form-data">
 
          <div class="form-group">
            <label for="formGroupExampleInput">Name</label>
            <input type="file" name="file" class="form-control" id="file">
          </div> 
 
          <div class="form-group">
           <button type="submit" id="send_form" class="btn btn-success">Submit</button>
          </div>
          
        </form>
      </div>
 
    </div>
  
</div>
</body>
</html>

以下の行は、Webページにエラーメッセージを表示します。

<?php if (session('msg')) : ?>
     <div class="alert alert-info alert-dismissible">
         <?= session('msg') ?>
         <button type="button" class="close" data-dismiss="alert"><span>×</span></button>
     </div>
 <?php endif ?>

ステップ7–開発サーバーを起動します

開発サーバーを起動するには、ブラウザに移動してURLの下を押します。

http://localhost/demo/public/index.php/form

結論

CodeIgniter4ファイルイメージを検証付きのawss3バケットにアップロードします。このチュートリアルでは、PHPcodeigniterを使用してAmazonawss3バケットにファイルをアップロードする方法を学習しました。

リンク: https://www.tutsmake.com/upload-file-to-amazon-aws-s3-bucket-in-codeigniter/

#aws