5
require 'vendor/autoload.php';

use Aws\S3\S3Client;

$client = S3Client::factory(array(
    'key'    => 'MY_KEY',
    'secret' => 'MY_SECRET'
));

// Register the stream wrapper from a client object
$client->registerStreamWrapper();

$data = $_POST["image_data"];

list($type, $data) = explode(';', $data);
list(, $data)      = explode(',', $data);
$data = base64_decode($data);

file_put_contents('s3://webcamapp/filename.png', $data);

このコードは問題なく機能し、画像がバケットにアップロードされています。ただし、このファイルを S3 に送信するときは、Web サイトに画像を表示するため、ACL を public-read に設定する必要があります。この方法を使用してそれを行う方法がわかりません。アイデア?

4

1 に答える 1

13

S3 Stream Wrapper は、ストリーム コンテキストを介して S3 への追加パラメータをサポートします。次のようなことを試してください:

$context = stream_context_create(array(
    's3' => array(
        'ACL' => 'public-read'
    )
));

file_put_contents('s3://webcamapp/filename.png', $data, 0, $context);
于 2013-10-29T21:02:23.573 に答える