【发布时间】:2019-05-09 01:47:51
【问题描述】:
我有一个 Laravel 5.8 应用程序,我正在尝试将我的上传配置为转到 Amazon s3 存储桶,但每次我尝试保存附有图像的帖子时,我都会收到错误 Error retrieving credentials from the instance profile metadata server. (cURL error 28: (see http://curl.haxx.se/libcurl/c/libcurl-errors.html))。互联网上有很多关于此的帖子,但没有一个能够帮助我解决我的问题。如果有帮助,我将在本地环境中使用 Valet。我的依赖项中还安装了"league/flysystem-aws-s3-v3": "^1.0",。使用 tinker 时出现同样的错误。谢谢。
filesystems.php
...
's3' => [
'driver' => 's3',
'version' => 'latest',
'credentials' => array(
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
),
'region' => env('AWS_DEFAULT_REGION'),
'bucket' => env('AWS_BUCKET'),
],
...
.env
...
AWS_ACCESS_KEY_ID=ASTRINGOFNUMBERSANDLETTERS
AWS_SECRET_ACCESS_KEY=anotherstrngofnumbersandletters
AWS_DEFAULT_REGION=us-west-1
AWS_BUCKET=bucket-name
...
PostController.php
...
if ($request->has('photo')) {
// Get image file
$image = $request->file('photo');
// Make a image name based on user name and current timestamp
$name = Str::slug($request->input('user_id')).time();
// Define folder path
$folder = '/uploads/posts/' . $user_id . '/';
// Make a file path where image will be stored [ folder path + file name + file extension]
$filePath = $folder . $name. '.' . $image->getClientOriginalExtension();
// Upload image
$this->uploadOne($image, $folder, 's3', $name);
// Set user profile image path in database to filePath
$post->photo = $filePath;
}
...
【问题讨论】:
标签: php laravel amazon-web-services amazon-s3