Ben S3 nasıl çalıştığını aşina değilim, bu yüzden bu çözüm mümkün olup olmadığını bilmiyorum. Ama sadece dosyaya kullanıcının tarayıcısını yönlendirmek değil mi? Eğer doğru anlamak, S3 size kova dosyaları herhangi bir web URL'ler oluşturmak için olanak sağlar. Yani diyelim ki, bu o zaman olabilir have S3 generate a temporary URL for that download, indirme ödenen ve sonra kullanıcı bunu indirildikten sonra ki kaldırmak vardır, eğer.
Bu bir seçenek değilse, bu PHP Sınıfları deneyebilirsiniz:
- HTTP protocol client - (aşağıda akışı sarıcı tarafından kullanılan) HTTP kaynaklara isteklerini uygulayan bir sınıf. Istekleri yayınlanmasına olanak verir.
- gHttp - Sen
fopen()
, fread()
, vb gibi fonksiyonları kullanarak, dosyalar gibi uzak HTTP kaynaklarını tedavi sağlayan bir HTTP akışı sarıcı
- Amazon S3 Stream Wrapper - gHttp olarak aynı geliştirici tarafından bir Amazon S3 akım sarıcı. Ayrıca uzaktan kaynaklar
fopen('s3://...')
aracılığıyla sıradan dosyalar erişilebilir sağlar.
Edit:
This page üzerine bilgi vardır nasıl "pre-Authenticate" URL doğrulama anahtarı kodlayan bir isteği için. Bu başlıklı bölüm altında bulunuyor: Query String Request Authentication Alternative.
// I'm only implementing the parts required for GET requests.
// POST uploads will require additional components.
function getStringToSign($req, $expires, $uri) {
return "$req\n\n\n$expires\n$uri";
}
function encodeSignature($sig, $key) {
$sig = utf8_encode($sig);
$sig = hash_hmac('sha1', $sig, $key);
$sig = base64_encode($sig);
return urlencode($sig);
}
$expires = strtotime('+1 hour');
$stringToSign = getStringToSign('GET', $expires, $uri);
$signature = encodeSignature($stringToSign, $awsKey);
$url .= '?AWSAccessKeyId='.$awsKeyId
.'&Expires='.$expires
.'&Signature='.$signature;
Sonra sadece $url
için kullanıcıyı yönlendirmek ve bunlar dosya indirmek mümkün olmalıdır. Imza bir tek yönlü şifreleme şeması (sha1) tarafından kodlanan, böylece AWS Gizli Erişim Anahtarı ortaya olma riski yoktur edilir.