簡體   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