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

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

PHP 接收 HTML 表单上传文件并将其上传到 AWS S3 存储的例子。 先来个简单的 html 上传代码…

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

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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17


|  | <!-- 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 存储。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30


|  | <?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 存储桶,并设置相应的访问权限。在这个例子中,我们将上传的文件设置为公共可读。

转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
使用 Hugo 构建
主题 StackJimmy 设计