amazon s3バケットに画像をアップロードするときに問題が発生しています。
Amazon S3 - 提案されたアップロードが許可されている最小サイズより小さい
サイズが238 KBのjpg画像をアップロードしようとしています。私はtry/catchを自分のコードに入れて、エラーの内容を確認しました。私はいつもこのエラーが出る:
Your proposed upload is smaller than the minimum allowed size
私も1メガバイトと2メガバイト、同じエラーからの画像でこれを試してみました...。ここで
は私のコードです:
<?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());
}
(。私はバケツ、キーや画像のリンクを変更しました)
は、誰もが前にこれを持っていましたか?インターネットでの検索は私にはあまり役に立たなかった。
また、最小のアップロードサイズを変更するために検索してもあまり効果がありませんでした。
UPDATE:私は、ローカルの画像でこれを試してみました
は、(ファイル名を変更)は、それが働きました!オンラインの画像でこの作業を行うにはどうすればよいですか?今、私はそれを私の一時ファイルに保存し、そこからアップロードします。しかし、ローカルに保存せずに直接保存する方法はありませんか?
マルチパートアップロードAPIは、任意のサイズのオブジェクトをアップロードすることができます。唯一の要件は、最後の部分を除くすべての "部分"が少なくとも5MBでなければならないということです。fread()は5MB未満の文字列を返します。 – Jesse