PHP Загрузка нулевых байтов в S3 - PullRequest
0 голосов
/ 27 января 2020

Я пытаюсь загрузить mp3 файлы в Amazon S3, но по какой-то причине все, что я загружаю, загружается с нулевой байтовой длиной. Я не могу понять, почему это происходит. Я пытался следовать учебному пособию и корректировать код самостоятельно. Любая помощь приветствуется.

<?php
error_reporting(0);
require '../../../../includes/aws-sdk-php/vendor/autoload.php';

use Aws\S3\S3Client;
use Aws\S3\Exception\S3Exception;


if (isset($_GET['test'])){
  if($_GET['test'] == "true"){
    include("../../depend.php");
    include("../../../../includes/okta-jwt/okta-jwt-functions.php");
    include("../../../../includes/aws-s3/functions.php");
    $jwtToken = $_GET['token'];
    $validateJWT = validateJWT($jwtToken);
    echo "$validateJWT";
    die();
  }
}

include("../../depend.php");
include("../../../../includes/okta-jwt/okta-jwt-functions.php");

if(isset($_POST['episodeTitle'])){
  $episodeTitle = $_POST['episodeTitle'];
}

if(isset($_POST['episodeDescription'])){
  $episodeDescription = $_POST['episodeDescription'];
}

if(isset($_POST['explicitContent'])){
  $explicitContent = $_POST['explicitContent'];
}

if(isset($_POST['episodeShowID'])){
  $episodeShowID = $_POST['episodeShowID'];
}

if(isset($_POST['jwtToken'])){
  $jwtToken = $_POST['jwtToken'];
}

if(isset($_POST['audioFile'])){
  $episodeAudio = $_POST['audioFile'];
}

$validateJWT = validateJWT($jwtToken);

$payloadJSON = json_decode($validateJWT);
$payloadDecoded = $payloadJSON;

$payloadUserID = $payloadDecoded->userID;

//Check if JWT Token Is Valid
if($payloadUserID != 0){

  $payloadUserOrgID = $payloadDecoded->userOrgID;
  $payloadRole = $payloadDecoded->role;
  $payloadExp = $payloadDecoded->exp;
  $payloadState = $payloadDecoded->state;
  $payloadFirstName = $payloadDecoded->firstName;
  $payloadLastName = $payloadDecoded->lastName;
  $payloadFullName = $payloadDecoded->fullName;

  $episodeStateCode = bin2hex(random_bytes(25));
  date_default_timezone_set('UTC');
  $showUtcTimestamp = date("Y-m-d H:i:s");

    // AWS Info
    $bucketName = 'XXX';
    $IAM_KEY = 'XXX';
    $IAM_SECRET = 'XXX';


    // Connect to AWS
    try {
        // You may need to change the region. It will say in the URL when the bucket is open
        // and on creation.
        $s3 = S3Client::factory(
            array(
                'credentials' => array(
                    'key' => $IAM_KEY,
                    'secret' => $IAM_SECRET
                ),
                'version' => 'latest',
                'region'  => 'us-east-2'
            )
        );
    } catch (Exception $e) {
        // We use a die, so if this fails. It stops here. Typically this is a REST call so this would
        // return a json object.
        die("Error: " . $e->getMessage());
    }

    // $keyName = "test_example/" . basename($_FILES["audioFile"]['name']);
    // $keyName = "org-$payloadUserOrgID/$episodeStateCode-" . basename($_FILES["audioFile"]['name']);
    $keyName = "org-$payloadUserOrgID/$episodeStateCode.mp3";
    $pathInS3 = 'https://s3.us-east-2.amazonaws.com/' . $bucketName . '/' . $keyName;

    // Add it to S3
    try {
        // Uploaded:
        $file = $_FILES["audioFile"]['tmp_file'];

        $s3->putObject(
            array(
                'Bucket'=>$bucketName,
                'Key' =>  $keyName,
                'SourceFile' => $file,
                'StorageClass' => 'STANDARD'
            )
        );

    } catch (S3Exception $e) {
        die('Error:' . $e->getMessage());
    } catch (Exception $e) {
        die('Error:' . $e->getMessage());
    }


    echo 'Done';


}
  ?>

Я могу подтвердить, что файл загружается на S3, но данных в этом файле нет. Любая помощь в этом была бы очень признательна.

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