【问题标题】:AWS S3 PHP File Upload. Returning URL but not actually uploadingAWS S3 PHP 文件上传。返回 URL 但未实际上传
【发布时间】:2018-05-07 03:31:15
【问题描述】:

我正在使用 AWS SDK for php 将文件上传到我的 S3 存储桶。我使用 IAM 管理器创建了一个单独的用户,并为其授予了对 S3 的完全访问权限。这是我实现的代码(PHP7,apache2)

$bucket = 'bucketname';

$file_path = $_FILES['fileToUpload']['tmp_name'];
$key = basename($_FILES["fileToUpload"]["name"]);

try{
    //Create a S3Client
    $s3Client = new S3Client([
        'version'     => 'latest',
        'region'      => 'ap-south-1',
        'credentials' => [
            'key'    => 'my-key',
            'secret' => 'secret-key',
        ],
    ]);

    $result = $s3Client->putObject([
        'Bucket'     => $bucket,
        'Key'        => $key,
        'SourceFile' => $file_path,
        'ACL'    => 'public-read',
    ]);

    echo $result['ObjectURL'];
} catch (S3Exception $e) {
    echo $e->getMessage() . "\n";
}

在上传文件时,我得到了这样的网址

https://bucketname.s3.ap-south-1.amazonaws.com/image.png (不是真实网址)

这是我得到的 xml 响应

<Error>
    <Code>NoSuchKey</Code>
    <Message>The specified key does not exist.</Message>
    <Key>/image.png</Key>
    <RequestId>E131E328AF9CAF41</RequestId>
    <HostId>gOreLsZBX9V1Whq++BoJVZCKPS415r51IUXXs0zZeIoa16KaXBCzOYKFrYYRktJJBB8HnBSyDTM=</HostId>
</Error>

有什么想法吗?

【问题讨论】:

  • 确保您的 S3 客户端密钥正确
  • 你在 S3 上看到你的文件了吗?
  • S3 客户端密钥正确。 @Thamaraiselvam 不,它显示存储桶为空
  • @JCDenton 尝试使用 move_upload_file() 函数而不是 putobject()

标签: php amazon-web-services amazon-s3


【解决方案1】:

您的代码中有几个问题。

  • 您只是在捕获 S3Exceptions。还可以通过添加以下代码并显示错误来捕获其他异常。您会发现您的代码正在生成其他错误。

    } 捕捉(异常 $e){ 回声“错误:”。 $e->getMessage() 。 "\n"; }

  • 您缺少用于 SSL 证书处理的 cacert.pem 文件。从CA certificates extracted from Mozilla 下载此文件并复制到您系统上的目录中。

  • 修改您的 PHP.INI 文件以包含 cacert.pem,使用您下载和安装它的完整路径。在 PHP.INI 部分 [openssl] 下,添加以下行:

    openssl.cafile=/path/cacert.pem

【讨论】:

    【解决方案2】:

    我觉得你应该试试

    move_upload_file($_FILES["fileToUpload"]["tmp_name"], $path);

    $path 是你的存储桶路径

    【讨论】:

      猜你喜欢
      • 2021-03-01
      • 2019-10-13
      • 1970-01-01
      • 2013-08-29
      • 1970-01-01
      • 1970-01-01
      • 2020-02-05
      • 1970-01-01
      • 2019-03-03
      相关资源
      最近更新 更多