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

Ore*_*eni 6 php amazon-s3 amazon-web-services laravel 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);
Run Code Online (Sandbox Code Playgroud)

Kev*_*Lee 5

你可以试试:

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

或者,假设这$tempName是相对于您的项目根目录:

Storage::disk('local')->delete($tempName)
Run Code Online (Sandbox Code Playgroud)