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