簡體   English   中英

如何在不使用官方PHP SDK臨時保存文件系統的情況下將base64編碼的圖像上傳到Amazon S3?

[英]How to upload base64 encoded image to Amazon S3 without temporarily saving on file system with official PHP SDK?

我使用名為html2canvas的javascript庫對div進行了“截屏”。 它將“截屏”作為base 64編碼的圖像返回,然后我使用AJAX傳遞給我的PHP服務器。 然后,服務器將圖像臨時保存在文件系統中,將圖像上傳到Amazon S3,然后立即刪除文件。 它可以工作,但是我想看看是否可以直接上傳圖像而不保存到文件系統。

我知道有一種方法可以直接通過客戶端javascript上傳圖像,但是我不想啟用CORS。 另外,我已經找到了Node.js的解決方案 ,所以我想也必須有一種在PHP中實現的解決方案

我注意到有人問類似的問題 ,但沒有答案,情況有些不同,因為我將laravel的官方服務提供者官方PHP SDK一起使用

因此,有沒有一種方法可以直接將base64編碼的圖像上傳到Amazon S3,而無需臨時保存在文件系統上?

如果您的字符串是正確的輸出,請跳過此步驟,但是如果您需要從GD圖像中“保存”,則可以使用ob控件將圖像保存到字符串中:

ob_start();
imagepng($image);
$pngData = ob_get_clean();
ob_end_clean();

然后,您只需指定“ Body即可直接上傳字符串,而不是文件。

$aParams = [
    'Bucket'     => $bucketName,
    'Key'        => $destName,
    'Body'       => $string,
    'ACL'        => 'public-read'
]);
$result = $s3Client->putObject($aParams);

您也可以選擇添加圖片標題等,就像上傳文件一樣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM