Datei hochladen auf amazon S3 mit PHP-SDK
Ich versuche, ein Bild hochzuladen auf meinem amazon S3 über Ihre PHP-SDK. Also machte ich ein kleines Skript zu tun. Aber mein script funktioniert nicht und meine Ausnahme nicht schickt mich zurück, keine Fehlermeldung.
Ich bin neu bei AWS danke für Eure Hilfe.
Hier ist der code :
Config.php
<?php
return array(
'includes' => array('_aws'),
'services' => array(
'default_settings' => array(
'params' => array(
'key' => 'PUBLICKEY',
'secret' => 'PRIVATEKEY',
'region' => 'eu-west-1'
)
)
)
);
?>
Index.php
<?php
//Installing AWS SDK via phar
require 'aws.phar';
use Aws\S3\S3Client;
use Aws\S3\Exception\S3Exception;
$bucket = 'infact';
$keyname = 'myImage';
//$filepath should be absolute path to a file on disk
$filepath = 'image.jpg';
//Instantiate the client.
$s3 = S3Client::factory('config.php');
//Upload a file.
try {
$result = $s3->putObject(array(
'Bucket' => $bucket,
'Key' => $keyname,
'SourceFile' => $filePath,
'ContentType' => 'text/plain',
'ACL' => 'public-read',
'StorageClass' => 'REDUCED_REDUNDANCY'
));
//Print the URL to the object.
echo $result['ObjectURL'] . "\n";
} catch (S3Exception $e) {
echo $e->getMessage() . "\n";
}
?>
EDIT : ich bin jetzt mit diesem code, aber seine immer noch nicht funktioniert. Ich weiß nicht einmal, ein Fehler oder eine exception Meldung.
<?php
require 'aws.phar';
use Aws\S3\S3Client;
use Aws\S3\Exception\S3Exception;
$bucket = 'infactr';
$keyname = 'sample';
//$filepath should be absolute path to a file on disk
$filepath = 'image.jpg';
//Instantiate the client.
$s3 = S3Client::factory(array(
'key' => 'key',
'secret' => 'privatekey',
'region' => 'eu-west-1'
));
try {
//Upload data.
$result = $s3->putObject(array(
'Bucket' => $bucket,
'Key' => $keyname,
'SourceFile' => $filePath,
'ACL' => 'public-read',
'ContentType' => 'image/jpeg'
));
//Print the URL to the object.
echo $result['ObjectURL'] . "\n";
} catch (S3Exception $e) {
echo $e->getMessage() . "\n";
}
?>
- Laufen Sie über das Web oder über die Kommandozeile ?
- Aus dem Internet, warum?
- Versuchen Sie es von der Befehlszeile aus, um die Fehler sehen.
- Ich habe noch nie verwenden, jede Konsole mit dem s3. Verwenden Sie s3tools.org zu verbinden?
- Ja
s3cmd
. Sie brauchen nichts3cmd
zu versuchen, dein Skript. Führen Sie einfach:php <yourscript>.php
- Entschuldigung für meine dumme Frage, aber wie Verbinde ich mein S3 dann? Wo führe ich meine Befehlszeile? (mac osx)
- aws.amazon.com/cli?
- von der Linux-Kommandozeile
- OK, also ich nehme an, Sie sind mit linux als OS. Können Sie mir sagen, warum ich brauchen, um die Befehlszeile verwenden, um mein Skript auszuführen ? Warum kann ich nicht einfach mein php-Skript auf meinem browser?
- Sie können mit Ihrem browser auch, es ist nur so, dass von der Befehlszeile aus können Sie die Fehler sehen. Ich nehme an, Sie können sich Ihre web-server-Protokolle auf Fehler zu.
- Heilige shart Jungs — es ist Zeit zu beginnen, mit Komponisten, wie ein Erwachsener.
- hey @casusbelli stehe ich vor demselben problem. hab keine Lösung für ein und dasselbe ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen, so etwas wie dieses (aus der AWS-docs):
Es funktioniert gut für mich, so lange wie Sie die richtigen Anmeldeinformationen. Beachten Sie, dass der name des Schlüssels ist der name Ihrer Datei im S3-wenn Sie so wollen, um Ihre Schlüssel haben den gleichen Namen der Datei, die Sie haben, etwas zu tun:
$keyname = 'image.jpg';
. Auch ein jpg ist im Allgemeinen nichtplain/text
- Datei-Typ, können Sie ommit, dassContent-type
Feld, oder Sie können einfach nur angeben:image/jpeg
sollte
Für diejenigen, die eine aktuelle funktionierende version, das ist, was ich bin mit
Einen alternativen Weg, um zu erklären, ist, indem Sie die locken, und wie Baue ich es in php - der pragmatische Ansatz.
Bitte nicht mich steinigen für die hässlichen code, dachte nur, dass diese Beispiel der einfach zu Folgen ist für den Upload in Azure aus PHP, oder eine andere Sprache.
Dies ist der eigentliche curl
Unten sind die Codes für Bild hochladen/Datei in amazon s3-bucket.