php把文件上传到AWS S3对象存储上的例子

247次阅读
没有评论

PHP 接收 HTML 表单上传文件并将其上传到 AWS S3 存储的例子。

先来个简单的 html 上传代码,让 php 去接受并上传。在 HTML 页面中,我们创建一个简单的表单,用于选择要上传的文件。

<!-- index.html -->
<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>上传文件 </title>
</head>
<body>
  <form action="upload.php" method="post" enctype="multipart/form-data">
    <input type="file" name="file">
    <button type="submit">上传文件 </button>
  </form>
</body>
</html>

在上面的代码中,我们使用 <form> 标签将文件上传到 upload.php 脚本,并使用 enctype="multipart/form-data" 属性指定表单数据类型为multipart/form-data,以支持文件上传。

接下来,在 PHP 中,我们将使用 AWS SDK for PHP 库来上传文件到 S3 存储。

<?php
// upload.php

require 'vendor/autoload.php'; // 引入 AWS SDK for PHP 库

use Aws\S3\S3Client;

if ($_SERVER['REQUEST_METHOD'] === 'POST') {if (isset($_FILES['file'])) {$bucketName = 'your-bucket-name'; // 修改为您的 S3 桶名称
        $s3Key = 'uploads/' . basename($_FILES['file']['name']);
        $file = $_FILES['file']['tmp_name'];

        $s3 = new S3Client(['version' => 'latest',
            'region' => 'your-region', // 修改为您的 S3 桶区域
            'credentials' => ['key' => 'your-access-key',
                'secret' => 'your-secret-key',
            ],
        ]);

        try {$s3->putObject(['Bucket' => $bucketName,
                'Key' => $s3Key,
                'Body' => fopen($file, 'r'),
                'ACL' => 'public-read', // 设置为公共可读
            ]);
            echo '文件上传成功';
        } catch (Exception $e) {echo '文件上传失败:' . $e->getMessage();}
    } else {echo '没有选择上传的文件';}
} else {echo '无效的请求方法';}

在上面的 PHP 代码中,我们首先引入了 AWS SDK for PHP 库,并根据需要创建了一个 S3 客户端对象。然后,我们在 $_FILES 全局变量中获取上传的文件,并使用 S3 客户端对象将文件上传到指定的桶中。

需要注意的是,您需要先在 AWS 中创建一个 S3 存储桶,并设置相应的访问权限。在这个例子中,我们将上传的文件设置为公共可读。

正文完
 0
板面杂货铺
版权声明:本站原创文章,由 板面杂货铺 于2023-06-15发表,共计1292字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。