gpt4 book ai didi

Laravel Storage for Amazon S3 'put' 方法使用错误的 URL

转载 作者:行者123 更新时间:2023-12-02 15:06:39 24 4
gpt4 key购买 nike

我正在使用 Laravel 5.7 开发一个应用程序,目前正在尝试使用 Amazon S3 实现图像存储。我正在将 league/flysystem-aws-s3-v3 包与 Laravel 的内置存储外观结合使用。当我尝试上传图像时,Storage->put() 命令生成错误的 URL。

我已经在线学习了多个教程和文档,所有这些都只需使用以下命令

Storage::disk('s3')->put('{file_name}', '{file_content}')

并且 file_name 会自动以 amazon s3 url 为前缀;然而,对我来说情况并非如此。但如果我在 AWS_URL 中进行硬编码,则一切正常。我在 .env 文件中设置了所有正确的值(我相信),但 Laravel 似乎没有正确获取 AWS_URL

我已经尝试过在环境值周围使用或不使用引号。我也跑过

php artisan config:cache
php artisan cache:clear

清除环境变量的缓存。

.env

AWS_ACCESS_KEY_ID="**************"
AWS_SECRET_ACCESS_KEY="****************"
AWS_DEFAULT_REGION="us-east-1"
AWS_BUCKET="*****"
AWS_URL=http://******.s3.us-east-1.amazonaws.com

文件系统.php

's3' => [
'driver' => 's3',
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION'),
'bucket' => env('AWS_BUCKET'),
'url' => env('AWS_URL'),
],

使用php artisantinker:

这会正确上传文件,但我不需要对网址进行硬编码。

>>> Storage::disk('s3')->put('snoflow.s3.us-east-1.amazonaws.com/Hello.txt', 'Hello World!');
=> true`

这是命令的调用方式,但出现错误。请注意,尝试的 URL 只是文件名。

>>> Storage::disk('s3')->put('Hello.txt', 'Hello World!');
=> Aws/S3/Exception/S3Exception with message 'Error executing "PutObject" on "https://filename.txt"; AWS HTTP error: cURL error 6: Could not resolve host: filename.txt (see http://curl.haxx.se/libcurl/c/libcurl-errors.html)'`

如有任何帮助,我们将不胜感激。

最佳答案

我通过删除 .env 中的 AWS_URL 键解决了这个问题。

关于Laravel Storage for Amazon S3 'put' 方法使用错误的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56247137/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com