[PHP] AWS S3にファイルをアップロード、S3のファイルを削除する方法

PHPを使用してAWS S3にファイルをアップロード、S3のファイルを削除する方法は以下の通り

AWS S3のバケット作成とcomposerのインストールは完了しているものとする

[php] Composerをインストール

composerでAWS SDKをインストールする

composer require aws/aws-sdk-php

目次

AWS S3にファイルをアップロード

$s3client->putObjectでアップロードできる

require 'vendor/autoload.php';
use Aws\S3\S3Client;

$file = "アップロードしたいファイルパス";
$pathData = pathinfo( $file ); //ファイル情報取得、あとで拡張子を追加するときに使用する
$name = "アップロードした後のファイル名(S3上のフォルダにアップロードしたい場合はフォルダ名も)"; //例: "fugafolder/hogehoge.txt"
$myKey = $name.".".$pathData["extension"]; //拡張子はオリジナルデータと同じにしている

uploadS3($file,$myKey);

function uploadS3($file,$myKey){

    $s3client = S3Client::factory([
        'credentials' => [
            'key'       => "アクセスキー",
            'secret'    => 'シークレットキー',
        ],
        'region' => 'ap-northeast-1', //AWSリージョン
        'version' => 'latest',
    ]);
    //注意:Public-readになるので適宜変更すること
    $s3client->putObject([
        'Bucket'        => "バケット名",
        'Key'           => $myKey,
        'SourceFile'    => $file,
        'ContentType'   => mime_content_type($file),
        'ACL'    => 'public-read'
    ]);
    return true;
}

AWS S3のファイルがあるか確認

$s3client->doesObjectExistでファイル存在を確認できる

require 'vendor/autoload.php';
use Aws\S3\S3Client;

$myFile = "フォルダも含めたファイル名";
if(checkS3($myFile)){
 echo "S3にファイルがあります";
}else{
 echo "S3にファイルはありません";
}

//S3のファイル削除関数
function checkS3($myKey){
    $backet = "バケット名";

    $s3client = S3Client::factory([
        'credentials' => [
            'key'       => "アクセスキー",
            'secret'    => 'シークレットキー',
        ],
        'region' => 'ap-northeast-1', //AWSリージョン
        'version' => 'latest',
    ]);
    if( !$s3client->doesObjectExist($backet, $myKey) ){
        return false;
    } else {
        return true;
    }    
}

AWS S3のファイルを削除

$s3client->deleteObjectで削除できる

require 'vendor/autoload.php';
use Aws\S3\S3Client;

$myFile = "フォルダも含めたファイル名";
deleteS3($myFile);

//S3のファイル削除関数
function deleteS3($myKey){
    $backet = "バケット名";

    $s3client = S3Client::factory([
        'credentials' => [
            'key'       => "アクセスキー",
            'secret'    => 'シークレットキー',
        ],
        'region' => 'ap-northeast-1', //AWSリージョン
        'version' => 'latest',
    ]);
    if( !$s3client->doesObjectExist($backet, $myKey) ){
        //エラー処理
    } else {
        $s3_delete = $s3client->deleteObject([
            'Bucket' => $backet,
            'Key'    => $myKey,
        ]);
    }
    return true;
}

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です