我正在尝试创建一个php脚本,它可以将文本文件上传到我的ASW S3存储桶。
我已经尝试过AWS网站上的方法,但遗憾的是,我认为它不是端到端的。
我已在我的实例上安装了AWS PHP SDK。
然后我做了示例代码中写的内容,即
<?php
use Aws\S3\S3Client;
$bucket = 'cst';
$keyname = 'sampleUpload';
// $filepath should be absolute path to a file on disk
$filepath = '/var/www/html/po/si/mag/sahara.txt';
// Instantiate the client.
$s3 = S3Client::factory();
// Upload a file.
$result = $s3->putObject(array(
'Bucket' => $bucket,
'Key' => $keyname,
'SourceFile' => $filepath,
'ContentType' => 'text/plain',
'ACL' => 'public-read',
'StorageClass' => 'REDUCED_REDUNDANCY',
'Metadata' => array(
'param1' => 'value 1',
'param2' => 'value 2'
)
));
echo $result['ObjectURL'];
?>
显然,我还没有添加aws密钥和aws密钥,所以它不会工作。但是,教程中也没有指定任何内容。所以有点失落。
其次,我尝试使用此code:
它也无法正常工作。
第三,我尝试了这个article。
当它与html一起使用时它正在工作但是我真的不能创建一个只有php的脚本,我可以只指定文件位置,并将文件上传到服务器。 / p>
非常感谢任何帮助。我经常搜索,但找不到任何有用的东西。
答案 0 :(得分:1)
只是猜测,但您是否使用隐藏的输入在HTML代码中添加了凭据?因为我只是快速查看了这个页面:https://aws.amazon.com/articles/1434/,您似乎可以使用HTML设置凭据。我的猜测是班级会自动处理这个问题。
如果我的猜测是正确的,您需要将凭据添加到您的实例中:
// Instantiate the client.
$s3 = S3Client::factory();
像
// Instantiate the client.
$s3 = S3Client::factory(array(
'version' => 'latest',
'region' => 'us-west-2', //add correct region
'credentials' => array(
'key' => <YOUR_AWS_KEY>,
'secret' => <YOUR_AWS_SECRET>
)
));
这可能取决于您正在使用的sdk的版本,是否需要上述代码或此代码(请注意缺少的凭证数组):
// Instantiate the client.
$s3 = S3Client::factory(array(
'version' => 'latest',
'region' => 'us-west-2', //add correct region
'key' => <YOUR_AWS_KEY>,
'secret' => <YOUR_AWS_SECRET>
));
编辑: 只是为了展示我的案例究竟有用,这是我的完整代码。我执行的路径: http://myurl.com/index.php?path=./test.txt
代码:
require __DIR__ . '/vendor/autoload.php';
use Aws\S3\S3Client;
$bucket = 'sdl-images';
$keyname = '*** Your Object Key ***';
// $filepath should be absolute path to a file on disk
$filepath = $_GET['path'];
// Instantiate the client.
$s3 = S3Client::factory(array(
'version' => 'latest',
'region' => <YOUR_REGION E.G. eu-west-1>,
'credentials' => array(
'key' => <YOUR_AWS_KEY>,
'secret' => <YOUR_AWS_SECRET>
)
));
// Upload a file.
$result = $s3->putObject(array(
'Bucket' => $bucket,
'Key' => $keyname,
'SourceFile' => $filepath,
'ContentType' => 'text/plain',
'ACL' => 'public-read',
'StorageClass' => 'REDUCED_REDUNDANCY'
));
echo $result['ObjectURL'];