将base64图像上传到亚马逊s3

2024-04-10

我在尝试将图像上传到 AWS S3 时遇到一些问题。似乎可以正确上传文件,但是每当我尝试下载或预览时,它都无法打开。目前,这是我正在使用的上传代码:

<?php
require_once 'classes/amazon.php';
require_once 'includes/aws/aws-autoloader.php';
use Aws\S3\S3Client;

$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 http://php.net/manual/en/function.base64-decode.php。我确信如果您尝试在文本编辑器中打开这些“图像”,您会看到 Base64 十六进制数据。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将base64图像上传到亚马逊s3 的相关文章

  • 显示居中的图像行

    我有一排三张图像 目前显示得很好 现在 我想在这三个图像的正下方显示另外两个图像 并且我希望它们居中 它看起来有点像一个颠倒的金字塔 无论我做什么 底行都保持左对齐 这是 css category width 176px font size
  • 图像上的文字

    是否可以在 php 中动态地将文本放置在图像上 然后将其发送到 rss feed 是的 可以使用GD http www php net gd函数或图像魔术师 http www php net imagemagick功能 具体取决于您的服务器
  • 如何在 PHP 中进行静态代码分析? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 有没有PHP源文件的静态分析工具 二进制文件本身可以检查语法错误 但我正在寻找功能更多的东西 例如 未使用的变量赋值 未先初始化就分配到的
  • 合并两个数字键关联数组并保留原始键

    我有两个这样的数组 array 11 gt 11 22 gt 22 33 gt 33 44 gt 44 array 44 gt 44 55 gt 55 66 gt 66 77 gt 77 我想组合这两个数组 使其不包含重复项并保留其原始键
  • PHP MS Word 文件页数

    实际上我正在尝试计算 ms word 文件的页数 我正在使用这个 php 脚本 但是 没有向我显示确切的结果 并且脚本不是那么快 谁能帮助我获得更好的脚本 word new COM word application if word echo
  • Laravel 资源策略始终为 false

    我试图允许用户在 Laravel 5 4 中查看自己的个人资料 用户策略 php public function view User authUser user return true 在 AuthServiceProvider php 中
  • mPDF 临时文件不可使用 Yii 写入

    我尝试打印 PDF 格式的证书 但是当我将代码推送到暂存阶段时 它说 Temporary files directory var www protected vendor mpdf mpdf src Config tmp is not wr
  • 订单编辑页面中的 WooCommerce 自定义字段

    Display custom field Orders edit page add action woocommerce before order itemmeta storage location of order items 10 3
  • 致命错误:调用未定义的方法 mysqli_stmt::query()

    为什么我会收到以下错误 致命错误 调用未定义的方法 mysqli stmt query mysqli new mysqli localhost or die mysqli gt connect error function checklog
  • Zend 框架 PDF 问题

    又是我 伙计们 我有一个小问题 Create new PDF pdf new Zend Pdf Add new page to the document page pdf gt newPage Zend Pdf Page SIZE A4 p
  • 如何使用对象标记上传到 AWS S3

    有没有办法使用标签将文件上传到AWS S3 不将标签添加到S3中的现有文件 对象 我需要让该文件与我的 Tags 一起出现在 S3 中 即在单个 API 调用中 我需要这个 因为我使用 Lambda 函数 使用这些 S3 对象标签 由 S3
  • iPhone表情插入MySQL却变成空值

    我们正在开发一个 iPhone 应用程序 它将表情符号从 iPhone 发送到服务器端 PHP 并插入到 MySQL 表中 我正在做服务器端的工作 但是insert语句执行成功后 插入的值变成空了 我可以正确插入字段 varchar 的是文
  • PDO::PARAM_FLOAT 不存在,为什么?

    我想知道为什么 PDO PARAM FLOAT 不存在以及什么可以替代它 没有 可能是由于隐含的舍入问题 只需使用PDO PARAM STR并使用将浮点数转换为字符串strval float or string float
  • 如何使用 PHP 中的 jQuery/AJAX 调用迭代 JSON 数组? [复制]

    这个问题在这里已经有答案了 可能的重复 循环Json对象 https stackoverflow com questions 684672 loop through json object 我有一个 PHP 函数 data php 它从外部
  • php循环中的ajax在按钮单击时执行操作

    所以我有一个 php 循环 我使用 jquery 滑动切换来隐藏 显示带有 sql 结果的表 目前该表仅使用 php 加载 但由于发生了很多事情 导致了一些加载问题 我需要使用滑动切换 btn 来触发 ajax 因此它仅在按下按钮时请求当前
  • 如何找到 httpd.conf 文件所在的位置?

    如何找到 apache PHP 上 httpd conf 文件的路径 我不知道我的脚本是否会在Windows apache或Linux中运行 我需要知道在哪里可以找到这个文件 以便从那里找到参数 谢谢 我认为它没有接触 PHP 跑步http
  • php echo 不工作

    我的代码似乎不起作用 单选按钮出现 但旁边什么也没有 似乎 mysql fetch array 由于某种原因无法工作 因为我已经玩过代码并反复测试它以查找代码似乎遇到的位置出现问题并停止工作 有人可以告诉我出了什么问题吗 欢呼声我是新手 最
  • 从数据库中给定时间起经过的时间

    我有一个 HTML 表 其中包含从数据库中提取的记录 我正在使用 PHP MySQL 我的表中名为 Timer 的列未从数据库中检索 我需要在此处显示经过的时间 从数据库中的特定时间开始 例如 假设现在的时间是2013年2月21日下午6点2
  • cakephp 3.0 如何使用值而不是 id 填充选择字段

    我一直在寻找以前的答案 但我找到的答案与旧的 cakephp 版本有关 我有两个表 杂志 和 问题 其中存在关系 问题 属于 杂志 问题表如下所示 public function initialize array config this g
  • 未加载 Firebird 扩展

    我正在尝试在 PHP 中使用 Firebird 扩展 我有扩展文件 php pdo firebird dll php interbase dll in my ext文件夹 我将它们添加到我的php ini像这样文件 PHP PDO FIRE

随机推荐

  • SSIS Excel 目标空白

    我正在调试一个 SSIS 包 该包从 SQL Server 数据开始 对其进行转换 然后将其放入 Excel 文件中 我在工作中经常这样做 以前从未遇到过这个问题 Excel 文件中没有写入任何行 我将数据查看器附加到通向 Excel 目标
  • Android:如何以编程方式连接/断开 OTG

    我想在我的 Android 设备中以编程方式连接和断开 USB OTG 笔式驱动器 硬盘驱动器等 对于USB 我使用以下路径在连接到PC时绑定 取消绑定USB sys bus usb drivers usb bind or unbind 我
  • Python:读取文件时如何忽略#comment行

    在Python中 我刚刚从文本文件中读取了一行 我想知道如何编写代码来忽略行开头带有哈希 的注释 我认为应该是这样的 for if line contain then process line else end for loop 但我是Py
  • JavaScript 对象如何引用其自身的值? [复制]

    这个问题在这里已经有答案了 假设我有以下 JavaScript var obj key1 it key2 key1 works alert obj key2 此错误显示 key1 未定义 我努力了 this key1 this key1 o
  • 单个部分的垂直滚动

    我必须制作一个具有垂直滚动过渡效果的部分 请观看此处的视频以供参考 https drive google com file d 1Fy4BDqc0 LDrPnEVYuQZdiJ0Pk9qDXA5 view usp sharing https
  • 将自定义对象传递给 Web 服务

    我正在使用 C 并且有 Windows 窗体和 Web 服务 我有一个自定义对象 我想将其发送到网络服务 有时 该对象可能包含大量数据 作为最佳性能 将自定义对象发送到 Web 服务的最佳方式是什么 Web 服务旨在处理自定义对象 只要它们
  • 使用 cython 加速数千个集合操作

    我一直在努力克服对 Cython 的恐惧 恐惧是因为我对 c 或 c 一无所知 我有一个函数需要 2 个参数 一个集合 我们称之为testSet 和一个集合列表 我们称之为targetSets 然后该函数会迭代targetSets 并计算与
  • 如何保护 Google Kubernetes Engine (GKE) 中的只读端口 10255?

    我创建了一个 GKE 私有集群 版本 1 13 6 gke 13 使用以下命令 gcloud container clusters create a cluster with user pass network vpc name subne
  • 实现编译时机制检查字符串的唯一性

    定义我的问题的最简单方法是我正在尝试实现一种机制来检查是否已使用相同的字符串 或一对 数字 字符串 我希望使用 C 预处理器以智能方式实现此机制 我还希望这种机制在调试模式下出现冲突或运行时错误时 通过检查断言 给我编译错误 我们不希望开发
  • IIS 替换部分 url

    我正在尝试使用 iis 中的 url 重写将 url 中的 se 替换为 sv 网址如下所示 www somedomain com se baadmarked 巴德 并且应该看起来像这样 www somedomain com sv baad
  • 网络安全字体粗细——如何变细?

    当我在 Photoshop 中设计时 我的字体又薄又清晰 但当我在 CSS 中声明字体时 即使使用 font weight lighter 字体总是显得更粗 也许这就是浏览器渲染字体的方式 在 IE 中字体保持细长 但我想知道是否有任何技巧
  • 以编程方式检索 OS X 磁盘分区 UUID

    我有一个分区的路径 如何在不使用终端命令的情况下以编程方式检索该分区的 UUID 举个例子会更有帮助 diskutil info grep UUID 从 C 运行它作为读者的练习 如果您想要根目录以外的分区 您可以指定挂载点或设备名称 例如
  • sp_spaceused - 如何测量 SQL 中所有表的大小(以 GB 为单位)

    继讨论之后如何在 SQL 中测量表中的表大小 以 GB 为单位 https stackoverflow com questions 7071473 我正在寻找一种解决方案来使用存储过程单独测量 SQL Server 的所有表所使用的空间sp
  • 如何将页面图片拉直,使其看起来像扫描的一样?

    我看过应用程序 想知道如何以编程方式拍摄图像 定义它需要如何转换 以便它看起来与相机平行 而不是倾斜透视 然后合并多张照片以创建 pdf 文件 例如这个应用程序就是这样做的 我不会用书籍来做这些琐碎的事情 所以很抱歉我不能推荐任何书籍 尤其
  • Linux Socket write() 的错误文件描述符 错误的文件描述符 C

    我对 write 2 函数有一个有趣的问题 PrepareResponseForSetCoordinates 函数会导致写入时出现错误的文件描述符错误 这是错误行 perror 写入套接字时出错 总产量 写入套接字时出错 文件描述符错误 我
  • 一段时间后终止由 exec() 启动的进程并将帧存储在数组中

    首先我要说的是我对 Java 完全陌生 我有 PHP 背景 但碰巧我的一项 PHP 任务需要转换为 Java 该任务是使用 ffmpeg 将视频分割为帧 然后处理这些帧 我已经用 PHP 完成了这个过程 现在我可以将它转换成Java 我浏览
  • 使用 fnmatch.filter 按多个可能的文件扩展名过滤文件

    给出以下一段 python 代码 for root dirs files in os walk directory for filename in fnmatch filter files png pass 如何过滤多个扩展名 在这种特殊情
  • 向 python 服务器添加超时时出现非阻塞错误

    我正在用 python 编写一个简单的 TCP 服务器 并尝试输入超时 我当前的代码 import socket def connect HOST Symbolic name meaning the local host PORT 5007
  • 我可以将 artifactId 转换为我的 Maven 原型中的类名前缀吗?

    我正在创建一个 Maven 原型 并在生成的项目中想要一个以生成的项目的工件 id 命名的类 工件 ID 的格式如下 the project name并且该类应命名为TheProjectNameMain 我尝试在我的archetype me
  • 将base64图像上传到亚马逊s3

    我在尝试将图像上传到 AWS S3 时遇到一些问题 似乎可以正确上传文件 但是每当我尝试下载或预览时 它都无法打开 目前 这是我正在使用的上传代码