Amazon S3 - Ihre vorgeschlagenen upload ist kleiner als die minimal erlaubte Größe
Ich habe Probleme, wenn ich möchte ein Bild hochladen auf meinen amazon s3-bucket.
Ich versuche zum hochladen eines jpg-Bild mit der Größe 238 KB. Ich habe einen try/catch-in meinen code zu überprüfen, was der Fehler war. Ich bekomme immer diese Fehlermeldung:
Ihre geplante upload ist kleiner als die minimal erlaubte Größe
Habe ich auch versucht, diese mit Bildern von 1MB und 2MB, gleiche Fehlermeldung ... .
Hier ist mein code:
<?php
//Include the SDK using the Composer autoloader
require 'AWSSDKforPHP/aws.phar';
use Aws\S3\S3Client;
use Aws\Common\Enum\Size;
$bucket = 'mybucketname';
$keyname = 'images';
$filename = 'thelinktomyimage';
//Instantiate the S3 client with your AWS credentials and desired AWS region
$client = S3Client::factory(array(
'key' => 'key',
'secret' => 'secretkey',
));
//Create a new multipart upload and get the upload ID.
$response = $client->createMultipartUpload(array(
'Bucket' => $bucket,
'Key' => $keyname
));
$uploadId = $response['UploadId'];
//3. Upload the file in parts.
$file = fopen($filename, 'r');
$parts = array();
$partNumber = 1;
while (!feof($file)) {
$result = $client->uploadPart(array(
'Bucket' => $bucket,
'Key' => $keyname,
'UploadId' => $uploadId,
'PartNumber' => $partNumber,
'Body' => fread($file, 5 * 1024 * 1024),
));
$parts[] = array(
'PartNumber' => $partNumber++,
'ETag' => $result['ETag'],
);
}
//Complete multipart upload.
try{
$result = $client->completeMultipartUpload(array(
'Bucket' => $bucket,
'Key' => $keyname,
'UploadId' => $uploadId,
'Parts' => $parts,
));
$url = $result['Location'];
fclose($file);
}
catch(Exception $e){
var_dump($e->getMessage());
}
(Habe ich geändert, Eimer, Schlüssel-und image-link.)
Hat jemand hatte dies vor? Auf der Suche im internet hat mir nicht helfen viel.
Auch die Suche zum ändern der minimum-upload-Größe nicht viel helfen.
UPDATE:
Als ich versuchte dies mit einem lokalen Bild (änderung der Dateinamen), es funktionierte! Wie kann ich diese Arbeit mit einem Bild, das online ist?? Jetzt Speichere ich es in meinem temp-Datei und dann laden Sie Sie von dort. Aber gibt es nicht einen Weg, um Sie direkt, ohne zu speichern es lokal?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den minimal multipart-upload-Größe ist 5 MB (1). Sie wollen wahrscheinlich verwenden Sie eine "normale" hochladen, nicht in ein multipart-upload.
(1) http://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadUploadPart.html
Dieser Fehler tritt auf, wenn eines der Teile ist weniger als 5 MB in der Größe und ist nicht der Letzte Teil (den letzten Teil kann beliebig groß sein).
fread()
zurückkehren kann, wird ein string kürzer als die angegebene Größe, so dass Sie brauchen zu halten, ruftfread()
bis Sie mindestens 5MB Daten (oder Sie haben erreicht das Ende der Datei) vor dem hochladen, dass ein Teil.Also Ihr 3. Schritt wird: