Monday, April 22, 2013

aws, sdk php2でS3にアップロード

Amazon Web Servicesが提供するS3にファイルをsdk php2を使ってアップロードする仕方の紹介です。
ここを参考にしたので、もっと知りたい方はこちらを見てください。英語です
http://docs.aws.amazon.com/aws-sdk-php-2/guide/latest/service-s3.html

Case1: /var/www/htmlにsample.txtがある
 require "vendor/autoload.php";
 use Aws\S3\S3Client;
 
 $bucket = "Bucket name";
 $client = S3Client::factory(array(
  'key' => 'Your Key',
  'secret' => 'Your Secret Key',
  'region' => 'Your Region' ));
 //このclientの作り方はhttp://docs.aws.amazon.com/aws-sdk-php-2/guide/latest/service-s3.html
 //こちらのリンクのCreating a clientを参考にしてください
 $client -> putObject(array(
  "Bucket" => $bucket,
  "Key" => "fromFopen.txt",
  "SourceFile" => "/var/www/html/sample.txt",
  "ACL" => "public-read"
 ));


これでアップロードできます。自分の環境に合わせて$bucketやputObjectの中身は変えてください。ポイントは"SourceFile"でアップロードしたいファイルを指定しているところです。

Case2: フォームで指定された画像をアップロードする

        //上と同じなので省略
 $bucket = "/*省略*/";
 $client = S3Client::factory(/*省略*/));
 $fileName = $_FILES["picture"]["name"];
 $filePath = "pictures/" . $fileName;

 if(move_uploaded_file($_FILES["picture"]["tmp_name"], $filePath)){
  $client -> putObject(array(
   "Bucket" => $bucket,
   "Key" => $fileName,
   "Body" => fopen(sprintf("/var/www/html/%s", $filePath), "r+"),
   "ContentType" => "image//*写真の種類、jpg, pngとか*/".
   "ACL" => "public-read"
  ));
 } else{
  echo "Not OK!";
 }

写真の時はなぜだか"SoueceFile"ではうまくいかなかったので、"Body"に変えました
これでアップロードできます^^

No comments:

Post a Comment