gpt4 book ai didi

laravel - 指定的键不存在 - Laravel

转载 作者:行者123 更新时间:2023-12-05 04:48:28 27 4
gpt4 key购买 nike

我正在尝试为我的应用程序中的文件创建一个临时 URL。我能够将文件上传到 S3 存储桶,并且能够使用方法 \Storage::temporaryUrl($this->url, now()->addHour(1)) 生成以下网址

https://xxxxxx.s3.eu-west-2.amazonaws.com/https%3A//xxxxxxx.s3.eu-west-2.amazonaws.com/images/fYr20cgYh3nAwoEEQCOTaVTLLo7nRFrXjp7cYcCz.jpg?X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAVHH6TLEV3Z2FBWLY%2F20210622%2Feu-west-2%2Fs3%2Faws4_request&X-Amz-Date=20210622T191649Z&X-Amz-SignedHeaders=host&X-Amz-Expires=3600&X-Amz-Signature=6300aa81e69c6f4c96cb6f319a2b5ed2bfc2b2767138994928a49f3f93906745

当我点击这个 URL 时,出现以下错误:

The specified key does not exist.

从这个问题https://stackoverflow.com/a/28654035/4581336我检查了以下内容:

  • 文件名存在于我的存储桶中,它是我存储桶中 Object URL 下文件的复制粘贴
  • 我尝试从文件中删除扩展名以查看它是否影响 URL,但也没有成功。 xxxx.jpgxxxxx 作为文件名是一样的

file name from my bucket

我是 AWS 世界的新人,所以我会复制粘贴我认为可能对帮助解决问题很重要的东西。

创建的 IAM 用户具有以下权限:

  • AmazonS3FullAccess

Block Public Access settings for this account 已阻止所有内容:

Block Public Access settings for this account

我的存储桶公共(public)权限也启用了所有内容:

my bucket permissions

我目前以 root 用户身份登录(因此我假设我是 root 用户,所以我可以做任何我想做的事)

如果我将所有存储桶公开,我就可以使用 temporaryUrl 方法生成的提取 URL 访问文件

最终目标

存储桶的目的是在我的应用程序中有一个地方存储用户上传的文件。我不想公开所有文件,所以我想限制用户访问他们拥有的文件,所以我创建了一个临时 URL

Storage::disk('s3')->temporaryUrl($url, now()->addMinutes(30));

由于我对在 S3 中存储文件还很陌生,所以我的逻辑可能存在缺陷。如果这不是应该的方式,请纠正我。

我看过但没有帮助我的问题

最佳答案

在您的第一个 URL 中,主机名似乎出现了两次 - https://xxxxxx.s3.eu-west-2.amazonaws.com 出现了一次,然后是第二次编码。您是否将完整的主机名存储在 $url 参数到 temporaryUrl 中?您应该只将 key (实际文件名)传递给该方法。

该错误听起来不像是权限错误 - 它看起来好像您可以访问存储桶,但只是没有获得正确的文件路径。

关于laravel - 指定的键不存在 - Laravel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68089708/

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