将远程文件复制到S3

时间:2015-04-05 17:52:03

标签: php amazon-s3

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

我的代码:

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

1 个答案:

答案 0 :(得分:1)

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