2016-06-07 158 views
0

我试图通过laravel应用程序将图像上传到S3。Laravel上传到s3的图像是0kb?

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”,

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

谢谢您花时间帮忙。

回答

0

首先你需要在composer.json和更新作曲家添加此2包

"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)); 
做工精细的