Я пытаюсь загрузить файл в Amazon S3 через Laravel 4.
После того как пользователь отправит форму, файл будет передан функции, где мне нужно будет использовать SDK Amazon PHP и загрузить файл в корзину Amazon S3.
Но как загрузить файл прямо на Amazon S3, не сохраняя файл на сервере.
Мой текущий код выглядит так,
private function uploadVideo($vid){ $file = $vid; $filename = $file->getClientOriginalName(); if (!class_exists('S3'))require_once('S3.php'); if (!defined('awsAccessKey')) define('awsAccessKey', '123123123'); if (!defined('awsSecretKey')) define('awsSecretKey', '123123123'); $s3 = new S3(awsAccessKey, awsSecretKey); $s3->putBucket("mybucket", S3::ACL_PUBLIC_READ); $s3->putObject($vid, "mybucket",$filename , S3::ACL_PUBLIC_READ); }
Захватите официальный SDK от http://docs.aws.amazon.com/aws-sdk-php/latest/index.html.
В этом примере используется http://docs.aws.amazon.com/aws-sdk-php/latest/class-Aws.S3.S3Client.html#_upload
require('aws.phar'); use Aws\S3\S3Client; use Aws\Common\Enum\Region; // Instantiate the S3 client with your AWS credentials and desired AWS region $client = S3Client::factory(array( 'key' => 'KEY HERE', 'secret' => 'SECRET HERE', 'region' => Region::AP_SOUTHEAST_2 // you will need to change or remove this )); $result = $client->upload( 'BUCKET HERE', 'OBJECT KEY HERE', 'STRING OF YOUR FILE HERE', 'public-read' // public access ACL );