Laravel图片上传到s3是0kb?

时间:2016-06-07 08:07:39

标签: php image amazon-s3 upload laravel-5.2

我试图通过laravel应用程序将图像上传到S3。

public function createFeature($id, Request $request)
{
    $refererURL = explode('/', URL::previous());
    $refererID = $refererURL[6];

    if ($refererID !== $id) {
        return redirect()->back();
    }

    $file = $request->file('feature_image');

    if ($file === null) {
        return redirect()->back();
    }

    if (!$this->isAllowedFile($file)) {
        return redirect()->back();
    }

    $name = str_random(255) . '-feature-' . '.' . $file->getClientOriginalExtension();

    Storage::disk('s3')->put($this->buildFilePath($name, $id), file_get_contents($file->getRealPath()));

    // Store in a database
    Media::create([
        'deal_id' => $id,
        'key' => 'feature',
        'value' => $name,
        'original' => $file->getClientOriginalName()
    ]);

    return redirect()->back();

}

问题是,有时它有效,有时它不会。我的意思是AWS S3控制台中的图像对象为0 kb

当我打开图像时,它只是空白。

我正在使用这个包: "联盟/ flysystem-aws-s3-v3":" ^ 1.0",

我为解决问题获得更多信息所做的是启用日志记录。我只是启用了日志记录,所以我还没有得到任何内容。

感谢您抽出宝贵时间提供帮助。

1 个答案:

答案 0 :(得分:0)

首先,您需要在composer.json中添加这2个包并更新composer

 "aws/aws-sdk-php-laravel": "~3.0",
"league/flysystem-aws-s3-v3": "^1.0",

我也使用相同的包,它在我的工作正常

$extension = $file->getClientOriginalExtension();
$imageName = rand(11111, 99999) . '.' . $extension; // rename image
$key =  Auth::user()->id."/". $imageName;
Storage::disk('s3')->put($key, file_get_contents($file));