Sadece bu bir katkı göndermek isteyen, Alex Neth bu başvuru üzerine doğru, ama Amazon'un kendi AWS PHP SDK2 kullanarak, bir bağlantı yeterli bilgi hissetmiyorum. Verileri bu şekilde çağırmak için bir temel (denenmemiş) yöntemini açıkladık Aşağıda, S3 Client yapmak için S3 Fabrika Yöntemini veya AWS Hizmet Builder kullanabilirsiniz.
<?php
// S3 Factory Method
/*use Aws\S3\S3Client;
$s3= S3Client::factory(array(
'key' => '<aws access key>',
'secret' => '<aws secret key>'
));*/
// OR AWS Service Builder
use Aws\Common\Aws;
// Create a service builder using a configuration file
$aws = Aws::factory('/path/to/my_config.json');
// Get the client from the builder by namespace
$s3 = $aws->get('S3');
// Now lets create our request object.
$command = $s3->getCommand('GetObject',array(
'Bucket' => 'your-bucket-name',
'Key' => 'keyname',
'ResponseContentType' => 'application/octet-stream',
'ResponseContentDisposition' => 'attachment; filename="filename.mp3',
));
$url = $command->createPresignedUrl('+1 days');
?>
Daha sonra PHP'nin başlığını kullanabilirsiniz ("Konum: $ url"); bir kuvvet download MP3 dosyasına ziyaretçinin yönlendirmek için, bu tarayıcıda oynayan önlemek gerekir, unutmayın, ben oldukça sık ResponseContentType kullanın ama AWS ile ResponseContentDisposition hiç kullanmadım (bu dokümanlar göre çalışmalıdır .)
Bir fonksiyon içine örnek dönüştürerek kolay olmalı, hatta $ kova $ anahtarı geçebileceği, $ gibi force_download
<?php
use Aws\Common\Aws;
function gen_url($bucket,$key,$force_download=false){
// OR AWS Service Builder (personal method to do this)
// Create a service builder using a configuration file
$aws = Aws::factory('/path/to/my_config.json');
// Get the client from the builder by namespace
$s3 = $aws->get('S3');
$params = array(
'Bucket' => $bucket,
'Key' => 'keyname',
'ResponseContentType' => 'application/octet-stream',
'ResponseContentDisposition' => 'attachment; filename="filename.mp3',
);
if($force_download){
$params['ResponseContentType'] = 'application/octet-stream';
$params['ResponseContentDisposition'] = 'attachment; filename="'.basename($key).'"';
}
$command = $s3->getCommand('GetObject',$params);
return $command->createPresignedUrl('+1 days');
}
// Location redirection to an MP3 force downlaod
header("Location: ".gen_url("recordings","my-file.mp3",true));
// Location redirection to a MP3 that lets the browser decide what to do.
header("Location: ".gen_url("recordings","my-file.mp3"));
?>
Eğer bunu anladım değil varsa UYARI, bu şu anda burada bulunan (7 Nisan 2014) http://aws.amazon.com/sdkforphp/ Bu kod çoğunlukla sahte kod ve aslında aynı işi yapmak için bazı ek verdiği gerekebilir AWS PHP SDK 2 gerektirir Bu bellekten referans ediyorum.