作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我必须制作一个预定的脚本/cfm,从某个文件位置下载图像(没问题),然后将其上传到我们的亚马逊 s3 位置(有问题)。这可能吗?如果可能的话怎么办?下载正常,文件存储在临时文件夹中。我如何/可以将此文件发送到 Amazon s3?
到目前为止我尝试过:
<cfhttp method="get" url="#cimage#" path="https://s3-eu-west-1.amazonaws.com/ourfilelocation/" file="#theimage#" />
给我错误“这是只读资源,无法写入”
<cfhttp method="get" url="#cimage#" path="#tmpfileloc#" file="#theimage#" />
<cfhttp method="post" url="https://s3-eu-west-1.amazonaws.com/ourfilelocation/" path="#tmpfileurl#" file="#theimage#" />
给我错误“405 方法不允许”
3.
<cffile action="upload" file="#tmpfileurl#/#theimage#" destination="https://s3-eu-west-1.amazonaws.com/ourfilelocation/">
这当然给了我“没有使用此表单发送文件”,因为没有表单
4.
<cfhttp method="post" url="https://s3-eu-west1.amazonaws.com/ourfilelocation">
<cfhttpparam type="file" name="#theimage#" file="#tmpfileurl#/#theimage#"> </cfhttp>
给我“连接失败”。状态代码不可用。”我想你不能只发布到该网址,这没有意义。但我不知道是否有办法可以做到。
最佳答案
您似乎正在尝试将文件保存到 AWS URL,而不是存储桶。您实际上只想使用这些 URL 来检索文件。而且,您不想使用 CFHTTP。
CF 能够在其大部分"file"操作功能中与 S3 配合使用。您需要在 AWS IAM 中创建一个有权访问 S3 存储桶的用户,并获取该用户的 AWS AccessKeyID 和 Secret。
您没有提及您使用的是哪个版本的 CF,但我相信自 2016 年以来就提供了 S3 支持?
因此,对于 2016 年和 2018 年,您可以使用 FileCopy 功能并简单地使用“S3”作为驱动器号,如下所示:
<cfset FileCopy(yourSourceFilePAth,"s3://#awsS3accessKeyId#:#awsS3Secret#@Your/Bucket/Path/Here")>
然后,您必须使用 storeSetACL() 函数设置权限,但这超出了问题的范围。
此外,还有其他方法来设置变量,CF2021 添加了更多功能,但这超出了您的问题范围。
关于amazon-s3 - 在ColdFusion中,是否可以使用计划任务直接将文件上传到amazon s3?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70096564/
我是一名优秀的程序员,十分优秀!