繁体   English   中英

如何从内存中将映像上传到PHP中的AWS S3?

[英]How to upload image to AWS S3 in PHP from memory?

因此,我目前有一个使用AWS S3上载图像的上载系统。

这是代码:

//Upload image to S3
$s3 = Aws\S3\S3Client::factory(array('key' => /*mykey*/, 'secret' => /*myskey*/,));

try {
    $s3->putObject(array(
        'Bucket' => "bucketname",
        'Key'    => $file_name,
        'Body'   => fopen(/*filelocation*/, 'r+')
    ));
} catch(Exception $e) {
    //Error
}

该图像可以是jpeg或png,我想在上传之前将其转换为png。 为此,我使用:

//This is simplified, please don't warn about transparency, etc.
$image = imagecreatetruecolor($width, $height);
imagecopyresampled($image, $source, 0, 0, 0, 0, etc.);

所以我在内存中有这个$image对象。

我想将其上传到S3,而不必将其保存在本地,先上传然后在本地删除; 这个额外的步骤似乎毫无意义。 但是我不知道如何直接上传这个$ image对象。

任何想法如何做到这一点? 我以为fopen()将创建与imagecreatetruecolor()类似类型的对象,但是我尝试将$ image对象传递给它,但它不起作用-但是如果我使用fopen()在本地打开图像,它会起作用)。

您可以使用输出缓冲来捕获GD图像资源的内容:

ob_start();
imagepng($image);
$pngdata = ob_get_clean();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM