Загрузите файлы в Aws s3 bucket (Private Bucket) из приложения Yii и предоставьте пользователям доступ к файлам - PullRequest
0 голосов
/ 16 января 2020

Я создал приложение в Yii2. Я хочу предоставить функциональность пользователю с правами администратора для загрузки файлов из панели администратора, и эти файлы будут загружены в корзину s3. Мое ведро - частное, не опубликованное c. Пользователи с правами администратора могут загружать эти изображения и видеофайлы в корзину, конечный пользователь может получить эти файлы из приложения android. Я не могу загрузить файлы в корзину. Я получил сообщение об ошибке типа S3 :: putObject (): [InvalidRequest] Предоставленный вами механизм авторизации не поддерживается. Пожалуйста, используйте AWS4-HMA C -SHA256.

Мой код указан ниже

public static function uploadToS3($fileTempName, $newfilename, $metaHeaders = array(), $contentType = null) {
    // create AWS object for file upload
    $s3 = new S3(Helpers::yiiparam('s3_access_key'), Helpers::yiiparam('s3_secret_access_key'));
    // connect AWS bucket
    if($s3->putObjectFile($fileTempName, Helpers::yiiparam('s3_bucket_name') , $newfilename, S3::ACL_PUBLIC_READ)){
        $msg = "S3 Upload Successful."; 
        $s3file='http://'.Helpers::yiiparam('s3_bucket_name').'.s3.amazonaws.com/'.$newfilename;
        echo "<img src='$s3file'/>";
        echo 'S3 File URL:'.$s3file;
    }else{
        echo 'msg='.$msg = "S3 Upload Fail.";
        exit;
    }
    exit;            
}

s3 class php Код файла

public static function putObjectFile($file, $bucket, $uri, $acl = self::ACL_PRIVATE, $metaHeaders = array(), $contentType = null) {
    return self::putObject(S3::inputFile($file), $bucket, $uri, $acl, $metaHeaders, $contentType);      
}

Можете ли вы предоставить решение для решения этой проблемы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...