0
WordpressアプリケーションからS3バケットにAjaxでファイルをアップロードしようとしています: どういうわけか、回答が得られず、 'putObject ' 方法。AWS S3にアップロードできません
APP/ajax.php
require_once 's3/start.php'
//wp_die(var_dump($s3)); Seems to be fine
$upload = $s3->putObject([
'Bucket' => $config['s3']['bucket'],
'Key' => 'video,
'Body' => fopen($_FILES['file']['tmp_name'], 'r'),
'ACL' => 'public-read',
]);
if ($upload) {
wp_die('Uploaded');
} else {
wp_die('Upload Error');
}
APP/S3/start.php
use Aws\S3\S3Client;
require 'aws/aws-autoloader.php';
$config = require('config.php');
$s3 = new S3Client([
'key' => $config['s3']['key'],
'secret' => $config['s3']['secret'],
'region' => $config['s3']['region'],
'version' => 'latest',
]);
APP/S3/AWS
Latest version of the official AWS SDK for PHP
解決方法 $ s3オブジェクトを初期化するときに正しく割り当てられていないapp/start.phpの認証情報。それはそれはあなたがファイルをアップロードする場合は、あなたの代わりにBody
のSourceFile
を使用する必要があります
$s3 = S3Client::factory([
'region' => $config['s3']['region'],
'version' => 'latest',
'credentials' => [
'key' => $config['s3']['key'],
'secret' => $config['s3']['secret']
]
]);
はちょうどそれを試してみましたが、まだ動作していません。 wp_dieと テスト()私は次のような結果を得る: $バケット=>正しいバケット名を、 $キー=>正しいキー名、 $ファイルパス=> 'を/ tmp/phpNKgE0e' –
iI'veだけの検査オブジェクトメソッドはvar_dump(get_class_methods($ s3))であり、putObjectメソッドはありません –
Ah - 2つのことをしてください1) 'ini_set()'と 'error_reporting()'を使ってすべてのエラーを出力できますか?それは間違いなくあなたを助けるでしょう。 2)あなたのクライアント接続も無効であるように見えますが、 'key'と' secret'は通常 'credentials 'の中にネストされます。この資格情報の部分については、このドキュメント(https://docs.aws.amazon.com/aws-sdk-php/v3/guide/guide/configuration.html)を参照してください。 – Chainat