2016-06-02 5 views
1

ich ohne Fehler wie diese eine Datei S3 bin Hochladen:Überprüfen S3 mit md5 in PHP succesfull laden

$s3 = new Aws\S3\S3Client([ 
     "version" => "latest", 
     "region" => $region 
    ]); 

    $result = $s3->putObject([ 
     "Bucket" => $bucket, 
     "Key" => $key, 
     "SourceFile" => $image, 
     "ACL" => "public-read" 
    ]); 

Ich habe über Etags und ContentMD5 Header lesen, aber ich kann es nicht zu setzen scheinen alles zusammen in PHP.

Woher wissen Sie, dass der Dateiinhalt korrekt ist?

Antwort

1

Got :

$sha256 = hash_file("sha256", $image); 
    $result = $s3->putObject([ 
     "Bucket" => getenv("S3_BUCKET_NAME"), 
     "Key" => $key, 
     "SourceFile" => $image, 
     "ACL" => "public-read", 
     "ContentSHA256" => $sha256 
    ]); 

Wenn die SHA nicht m Ich bekomme eine S3-Ausnahme, was ich will.

0

Dateien md5 in Metadaten hinzufügen, zum Beispiel:

$result = $s3->putObject([ 
    "Bucket" => $bucket, 
    "Key" => $key, 
    "image" => $image, 
    "ACL" => "public-read", 
    "Metadata" => [ 
     "Content-MD5" => base64_encode($fileMd5) 
    ] 
]); 

http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html#object-metadata Siehe

Für in PHP md5 der Datei bekommen können Sie die ContentSHA256 Schlüssel daran zu arbeiten verwenden md5_file Funktion

+0

Verwendet '$ md5 = md5_file ($ image);' und hinzugefügt '" ContentMD5 "=> $ md5' als Argument. Dann erhalte ich 'InvalidDigest (Client): Der Content-MD5 Sie angegeben war invalid.' Mein md5 war' 430713ae0317a0f9c15af704c352b95d' aber Antwort vom Server des hatte ' 430713ae0317a0f9c15af704c352b95d' –

+0

Sorry, müssen md5 als codiert werden base64, ich aktualisiere Antwort – maximkou

+0

Danke für die Hilfe, aber es funktioniert immer noch nicht richtig. Jetzt bekomme ich keine Fehler mehr, aber ich kann mein MD5 zu nichts ändern und es lädt das Bild trotzdem fehlerfrei hoch: - / –