[英]Upload file to AWS S3 using php
我正在嘗試創建一個 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 密鑰,所以它不起作用。 但是教程中也沒有指定任何內容。 所以我有點迷失了。
其次,我嘗試使用此代碼:
它也不起作用。
第三,我嘗試了這篇文章。
當我將它與 html 一起使用時它正在工作,但我真的無法創建一個僅 php 的腳本,我可以在其中指定文件位置,並將文件上傳到服務器。
任何幫助都受到高度贊賞。 我搜索了很多,但找不到任何有用的東西。
只是猜測,但您是否使用隱藏輸入在 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'];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.