Ich benutze das Amazon SDK für PHP und versuchen, Cache-Control-Header auf dem Bild zu setzen. Wenn ich versuche, es über MetaData = array ("Cache-Control") hinzuzufügen, ändert es sich zu x-amz-meta-cache-control, wenn ich mich beim S3-Bucket anmelde, und wenn ich die Datei herunterlade, gibt es keinen Cache -Kontrollset. Aber wenn ich diese Einstellung manuell ändere, funktioniert die Cache-Kontrolle perfekt. Gibt es einen fehlenden Parameter, mit dem ich HTTP-Anforderungsheader programmatisch beim Upload festlegen kann? Ich verwende die PutObject-Methode. Ich glaube, dass das AWS SDK von 2013 ist.Set-Cache HTTP-Header für S3-Objekte von PHP AWS SDK
Antwort
Die Cache-Kontrolle wird nicht über den "MetaData" Index gesetzt, "CacheControl" ist auf der gleichen Ebene wie "MetaData", nicht darin enthalten.
http://docs.aws.amazon.com/aws-sdk-php-2/latest/class-Aws.S3.S3Client.html#_putObject
Sie so etwas wie dies als Konfigurations Array für die() -Methode putObject verwenden würde ...
$s3client->putObject(array(
'Bucket' => '...',
'key' => '...',
'body' => '...',
'CacheControl' => 'max-age=172800',
'MetaData' => array(
'metaKey' => 'metaValue',
'metaKey' => 'metaValue'
)));
Für den Upload() Methode ...
$s3client->upload(
'bucket',
'key',
fopen('sourcefile','r'),
'public-read',
array('params' => array(
'CacheControl' => 'max-age=172800',
'Metadata' => array(
'metaKey' => 'metaValue',
'metaKey' => 'metaValue'
))));
Auch, es ist erwähnenswert, dass upload()
wickeln wirdfür Dateien mit einer Größe von 5 MB, andernfalls wird eine mehrteilige Upload-Anfrage ausgelöst.
Wenn Sie den Header CacheControl
zu einem bereits in Ihrem Bucket vorhandenen Element hinzufügen möchten, verwenden Sie die SDK-Methode copyObject
. Setzen Sie den Parameter MetadataDirective
auf REPLACE, um das Element selbst zu überschreiben.
Ich bemerkte eine seltsame Sache: Ich musste die ContentType
Header auch setzen, obwohl es bereits eingestellt war. Andernfalls wird das Bild nicht im Browser angezeigt, sondern als Download angeboten.
$result = $s3->copyObject(array(
'ACL' => 'public-read',
'Bucket' => $bucket, // target bucket
'CacheControl' => 'public, max-age=86400',
'ContentType' => 'image/jpeg', // !!
'CopySource' => urlencode($bucket . '/' . $key),
'Key' => $key, // target file name
'MetadataDirective' => 'REPLACE'
));
- 1. Installation von aws php sdk - unerwartete Variablen
- 2. Extract Protected Request Antwort von AWS SDK für PHP
- 3. Installieren von JavaScript AWS SDK für NativeScript
- 4. AWS SDK v2 für s3
- 5. (Ordner) in S3 - aws sdk v3 php
- 6. signierte Cookies für aws cloudfront einrichten https mit php SDK
- 7. Zugriff verweigert für SQS über AWS SDK
- 8. Hochladen eines Bildes mit AWS SDK für PHP 2
- 9. aws sdk php für die auflistung s3 ordner
- 10. AWS SDK für PHP - Wie Erstellungsdatum einer Datei
- 11. Richtiger Endpunkt für S3-Client in Amazon AWS PHP SDK
- 12. Guice inject httpheader
- 13. So geben Sie AWS-Credentials für .NET AWS SDK an
- 14. mit aws sdk für java in Jruby
- 15. aws Rechnungsinformationen mit aws java sdk
- 16. AWS Java SDK-Anmeldeinformationen
- 17. Transferutility in Aws sdk
- 18. AWS SDK: java.lang.NoSuchMethodError
- 19. SSLHandshakeException bei Verwendung von AWS SDK für Java-API
- 20. AWS Java SDK: Angeben von KMS Key-ID für EBS
- 21. AWS SDK S3 Hochladen von Anmeldeinformationen
- 22. ez Komponenten und AWS PHP SDK macht ez Komponenten ausflippen
- 23. API-Gatewayanfrage mit AWS SDK
- 24. AWS Rest API ohne SDK
- 25. Wie setCache für Online-Daten OkHttpClient in Android verwenden
- 26. Kontoerstellung in aws von Android Mobile SDK
- 27. aws ios sdk - Ausgabe Bilder von s3
- 28. Upload von .txt FileStream auf AWS SDK
- 29. Warum bricht das Update für AWS SDK Laravel 5.1?
- 30. Hochladen Bild Eimer usket zu s3 aws sdk mit PHP
Können Sie bitte meine Antwort als "akzeptiert" markieren, wenn es Ihnen geholfen hat. – Scuzzy