php – 将base64图像上传到amazon s3
发布时间:2020-12-13 21:56:48 所属栏目:PHP教程 来源:网络整理
导读:我在尝试将图像上传到AWS S3时遇到了一些问题.它似乎正确上传文件,但每当我尝试下载或预览时,它都无法打开.目前,这是我正在使用的上传代码: ?phprequire_once 'classes/amazon.php';require_once 'includes/aws/aws-autoloader.php';use AwsS3S3Client;$p
我在尝试将图像上传到AWS S3时遇到了一些问题.它似乎正确上传文件,但每当我尝试下载或预览时,它都无法打开.目前,这是我正在使用的上传代码:
<?php require_once 'classes/amazon.php'; require_once 'includes/aws/aws-autoloader.php'; use AwsS3S3Client; $putdata = file_get_contents("php://input"); $request = json_decode($putdata); $image_parts = explode(";base64,",$request->image); $image_type_aux = explode("image/",$image_parts[0]); $image_type = $image_type_aux[1]; $image_base64 = $image_parts[1]; $dateTime = new DateTime(); $fileName = $dateTime->getTimestamp() . "." . $image_type; $s3Client = S3Client::factory(array( 'region' => 'eu-west-1','version' => '2006-03-01','credentials' => array( 'key' => Amazon::getAccessKey(),'secret' => Amazon::getSecretKey(),) )); try { $result = $s3Client->putObject(array( 'Bucket' => Amazon::getBucket(),'Key' => 'banners/' . $fileName,'Body' => $image_base64,'ContentType' => 'image/' . $image_type,'ACL' => 'public-read' )); echo $result['ObjectURL'] . "n"; } catch(S3Exception $e) { echo $e->getMessage() . "n"; } ?> 因此,当我在上传图像文件后检查控制台时,它具有预期的大小,权限和标题,但正如我所说,每当我尝试打开文件时,它都会失败. 这可能是什么问题?提前致谢. 解决方法
这里的问题是你似乎正在上传图像的base64编码版本而不是图像的原始字节.取$image_base64并首先解码为原始字节
http://php.net/manual/en/function.base64-decode.php.我相信如果你试图在文本编辑器中打开那些“图像”,你会看到base64十六进制数据.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |