我有这个功能可以将图片上传到bucket
中s3
上的一个AWS
$image = $picture;
$ext = explode(";", explode("/",explode(",", $image)[0])[1])[0];
$image = str_replace('data:image/'.$ext.';base64,', '', $image);
$image = str_replace(' ', '+', $image);
$imageName = str_random(10) . '.' . $ext;
$fullImagePath = 'datasheets/' . $imageName;
Storage::disk('s3')->put($fullImagePath, base64_decode($image));
$DataSheetPicture = new DataSheetPicture();
$DataSheetPicture->data_sheet_id = $DataSheet->id;
$DataSheetPicture->picture = Storage::disk('s3')->url($fullImagePath);
$DataSheetPicture->save();
上面的代码工作正常,可以将图片成功上传到bucket
,但是在这一行
$DataSheetPicture->picture = Storage::disk('s3')->url($fullImagePath);
它将URL像这样保存在数据库中
/datasheets/6GcfzgUPrA.jpeg
/datasheets/AuqHmu8p0W.jpeg
但是我需要这样的网址
我不想连接区域或存储桶名称,因为它可能是动态的
答案 0 :(得分:1)
以下内容将为您提供正确的URL:
return Storage::disk('s3')->url($filename);
自Laravel 5.2
起,您还可以使用cloud()
return Storage::cloud()->url($filename);
我不想连接区域或存储桶名称,因为它可能是动态的
然后,您必须修改配置,而不是手动执行此操作才能正常工作,例如:
config([
'filesystem.disks.s3.bucket' => 'my_bucket'
'filesystem.disks.s3.region => 'my_region'
]);