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