[英]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.