Laravel和AWS PHP SDK - 无法在将本地文件上载到S3后删除它

时间:2015-09-03 20:15:45

标签: php laravel amazon-web-services amazon-s3 laravel-5.1

我正在尝试在将文件上传到AWS S3后立即从本地目录中删除该文件。当我在Vagrant上运行时,我得到一个错误=文本文件:忙,当我在xampp上运行时,我收到错误:权限被拒绝。出于某种原因,AWS S3 PutObject方法未释放文件句柄。我试图取消设置s3对象但是没有用。

以下是代码:

    $tempName = public_path().'/path/to/file'

    //Initialize AWS
    $s3 = AWS::createClient('s3');


    //Upload image to AWS

    try {
        $reponse = $s3->putObject(array(
            'Bucket'       => 'zotamoda',
            'Key'          => $productImage->image_folder."/".$productImage->image_name,
            'SourceFile'   => $tempName,
            'ACL'          => 'public-read',
        ));
    } catch (S3Exception $e) {
        // The AWS error code (e.g., )
        echo $e->getAwsErrorCode() . "\n";
        // The bucket couldn't be created
        echo $e->getMessage() . "\n";
    }


    //Delete image from temporary location
    unlink($tempName);

1 个答案:

答案 0 :(得分:3)

你可以尝试:

Storage::disk('s3')->put($productImage->image_folder."/".$productImage->image_name, file_get_contents($tempName), 'public');
unlink($tempName);

或者,假设$tempName与项目根目录相关:

Storage::disk('local')->delete($tempName)