我试图通过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",
我为解决问题获得更多信息所做的是启用日志记录。我只是启用了日志记录,所以我还没有得到任何内容。
感谢您抽出宝贵时间提供帮助。
答案 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));