正在将远程文件复制到S3


Copying remote file to S3

我正试图将文件从Shopify传输到S3,但我收到了以下错误:"您必须为Body或SourceFile参数指定一个非null值。"我相信这是因为我正在从远程位置传输文件,但我不知道如何解决这个问题。我已经验证了远程文件确实存在,并且如果我使用表单上传,我的代码运行良好

我的代码:

require dirname(__FILE__).'/../../vendor/autoload.php';
use Aws'S3'S3Client;
$s3Client = null;
$bucket="mybucketname"; 
$myfile="myfilename.jpg";  
$mypath="https://shopifyfilepath/".$myfile;
function SendFileToS3($filename, $filepath, $bucket) 
{
    global $s3Client;
    if (!$s3Client) 
    {
        $s3Client = S3Client::factory(array(
        'key' => $_SERVER["AWS_ACCESS_KEY_ID"],
        'secret' => $_SERVER["AWS_SECRET_KEY"]
        ));
    }
    $result = $s3Client->putObject(array(
        'Bucket'     => $bucket,
        'Key'        => $filename,
        'SourceFile' => $filepath,
        'ACL'        => 'public-read'
    ));
    return $result;
}
SendFileToS3($myfile, $mypath, $bucket);

您不能将文件直接从HTTP路径传输到S3。您需要先将其下载到本地文件(或变量)中,然后再进行传输。