2017-01-12 11 views
0

私はASW S3バケットにテキストファイルをアップロードできるPHPスクリプトを作成しようとしています。PHPを使用してAWS 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を使用してみました:それはまた、働いていない

第3に、私はこれを試しましたarticle

htmlで使用しているときに動作していますが、実際にはファイルの場所を指定できるだけのPHPスクリプトを作成することはできません。ファイルはサーバーにアップロードされます。

ご協力いただきまして誠にありがとうございます。私は多くを検索しましたが、役に立たないものは何も見つかりませんでした。

+0

「_Itの作業を、私は、実行パスファイルgetはサーバーにアップロードされました。 "_私は混乱しています - ここでは正確に何が必要ですか?質問のコードは期待どおりに機能しますか? – WillardSolutions

+0

いいえ、最後のリンクはタイトルとして、つまりAWS S3への直接アップロード(PHPとHTMLを使用)と同じです。私はPHPを介してのみアップロードしたいと思います。私は場所をPHPファイルにPOST要求をするつもり、ファイルはs3にアップロードする必要があります。 – driftking9987

+0

ファイルのアップロード入力でHTMLフォームを作成しましたか? – WillardSolutions

答えて

1

隠し入力を使用してHTMLコード内にあなたの認証情報を追加しましたか?なぜなら、私はちょうどこのページを素早く見ていた:https://aws.amazon.com/articles/1434/とあなたはHTMLを使用して資格情報を設定することができるようです。そして私の推測では、クラスは自動的にそれを処理します。

私の推測が正しければ、あなたのインスタンスに資格情報を追加する必要があります:

// 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> 
) 
)); 

よう

// Instantiate the client. 
$s3 = S3Client::factory(); 

それはおそらくあなたが使用している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

コード:HTMLでそれを使用するが、私は本当に私はちょうどファイルの場所を指定することができる唯一のスクリプトはPHPを作成することはできませんしていています

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']; 
+0

私はブラウザを通してファイルをアップロードすることができますが、私はそれをPHPスクリプトを通して直接アップロードしたいと思います。すなわち、リンクを呼び出し、ファイルの位置をパラメータとして渡し、ファイルをアップロードする必要があります。アンドロイドの携帯電話のボタンをクリックすると、バケツにアップロードされたファイルがあると想像してください。 – driftking9987

+0

大きな問題ではありませんか?私の場合、 'require __DIR__ 'を追加しただけで、名前空間が正しくロードされていることを確認する必要があります。 '/vendor/autoload.php'; 'ファイルの先頭にあり、ファイルを直接呼び出しました。パラメータ 'http://url.nl/?uploadfile =/test.txt'を追加し、そのパラメータ(' $ _GET ['uploadfile'] ')をあなたのファイルパスに追加することができます...? –

+0

私の編集した答えをチェックしてください、例として –

関連する問題