【问题标题】:How to upload file directly to AWS S3 with AWS SDK?如何使用 AWS SDK 将文件直接上传到 AWS S3?
【发布时间】:2019-12-06 06:34:00
【问题描述】:

我想将图像文件直接上传到 S3,而不将它们存储在我的服务器上(出于安全考虑)。我如何使用PHP SDK from AWS S3 做到这一点?这是一个示例代码:

<?php
require_once '/var/www/site/vendor/autoload.php';

use Aws\S3\S3Client;
use Aws\S3\Exception\S3Exception;

$bucket = '<your bucket name>';
$keyname = 'sample';
$filepath = '/path/to/image.jpg';

// Instantiate the client.
$s3 = S3Client::factory(array(
    'key'    => 'your AWS access key',
    'secret' => 'your AWS secret access key'
));

try {
    $result = $s3->putObject(array(
        'Bucket' => $bucket,
        'Key'    => $keyname,
        'SourceFile'   => $filepath,
        'ACL'    => 'public-read'
    ));

    echo 'Success';
} catch (S3Exception $e) {
    echo $e->getMessage() . "\n";
}

这是上传表格:

<form action="upload.php" method="post" enctype="multipart/form-data">
    <input type="file" name="image" id="image">
    <input type="submit" value="Upload Image" name="submit">
</form>

由于安全原因我不想将$filepath 存储在我的服务器上(我不希望它执行恶意代码和类似的东西),我会在 PHP 代码中添加什么?任何帮助将不胜感激!

【问题讨论】:

  • 能贴出图片来源的form/html吗?
  • @atymic 是的,我在中添加了

标签: php amazon-web-services security amazon-s3 file-upload


【解决方案1】:

PHP 内置的文件上传处理功能将使这变得非常简单。当收到带有文件的请求时,PHP 会自动将其移动到临时位置并使用$_FILES 使其元数据可访问。

然后您可以执行以下操作将文件上传到 s3:

<?php
if(empty($_FILES['image'])){
    die('Image missing');
}

$fileName = $_FILES['image']['name'];
$tempFilePath = $_FILES['image']['tmp_name'];

require 'vendor/autoload.php';

$s3 = S3Client::factory(array(
    'key'    => 'your AWS access key',
    'secret' => 'your AWS secret access key'
));

try {
    $result = $s3->putObject(array(
        'Bucket' => '<your bucket>',
        'Key'    => $fileName,
        'SourceFile'   => $tempFilePath,
        'ACL'    => 'public-read'
    ));

    echo 'Success';
} catch (S3Exception $e) {
    echo $e->getMessage() . "\n";
}

【讨论】:

    猜你喜欢
    • 2017-01-10
    • 2013-11-14
    • 2019-12-16
    • 1970-01-01
    • 2018-07-07
    • 2013-02-02
    • 1970-01-01
    • 2014-05-27
    • 2021-12-21
    相关资源
    最近更新 更多