php - Laravel 和 AWS PHP SDK - 上传到 S3 后无法删除本地文件

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

我试图在将文件上传到 AWS S3 后立即从本地目录中删除该文件。当我在 Vagrant 上运行它时,我得到一个错误 = Text-file:busy,当我在 xampp 上运行它时,我得到错误:permission denied。出于某种原因,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);

最佳答案

你可以试试:

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

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

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

关于php - Laravel 和 AWS PHP SDK - 上传到 S3 后无法删除本地文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32384669/

相关文章:

php - 函数如何在 PHP 中调用自身?

amazon-web-services - AWS Amplify 将 Gatsby 404 重定向到根 URL

c# - 如何使用 CloudFormation Template 连接到现有 EC2 实例并执行 shell 文件

php - 如何从数据库中列出用户类型并允许从管理面板中进行选择?

php - 使用 PHP 在 mysql 查询中创建动态 AND 子句

javascript - 如何从 Javascript 日期中减去 php 日期

amazon-web-services - 是否可以重命名 AWS CloudWatch 日志组?

php - 如何通过 PHP 使用 Azure 开放数据

php - 如何使用 PHP 和 PDO 将数组插入到单个 MySQL 准备语句中

Laravel - 调用未定义的方法illuminate\Foundation\Application::bindshared()