【问题标题】:In ColdFusion, Is it possible to upload files to amazon s3 directly using a scheduled task?在 ColdFusion 中,是否可以使用计划任务直接将文件上传到 amazon s3?
【发布时间】:2021-11-24 13:00:57
【问题描述】:

我必须制作一个预定的脚本/cfm,从某个文件位置下载图像(没问题),然后将其上传到我们的 amazon s3 位置(问题)。 这可能吗?如果可以,怎么办?下载没问题,文件存储在临时文件夹中。 我如何/可以将此文件获取到 Amazon s3?

到目前为止我试过了:

  1. 下载文件时直接存储在s3上:
<cfhttp method="get" url="#cimage#" path="https://s3-eu-west-1.amazonaws.com/ourfilelocation/" file="#theimage#" />

给我错误'这是一个只读资源,无法写入'

  1. 首先将其下载到临时文件位置,然后在新的 cfhttp 中上传到 s3:
<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 Method Not Allowed'

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>

给我“连接失败”。状态码不可用。我想您不能只发布到该网址,这没有任何意义。但我不知道你是否有办法。

【问题讨论】:

  • 请编辑问题以显示您尝试过的内容。还要详细说明问题。
  • @DanBracuk 更新
  • 我们仍然使用 CF2016 (Win) 并依赖使用 S3 Express (CLI) 来实现我们的后台复制功能。它支持更多的 S3 功能,多线程(速度更快)并且在传输非常大的文件时没有任何问题。

标签: amazon-s3 coldfusion coldfusion-2016


【解决方案1】:

您似乎正在尝试将文件保存到 AWS URL,而不是存储桶。您真的只想使用这些 URL 来检索文件。而且,您不想使用 CFHTTP。

CF 能够在其大多数“文件”操作功能中与 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 添加了更多功能,但这超出了您的问题范围。

【讨论】:

  • 感谢您的详细解答。我们有 CF 2016。不幸的是,由于内部流程,检索公司已经存在的 AWS IAM 用户或创建新用户需要一些时间。因此,我将无法很快验证您的解决方案。与此同时,我将开始学习存储桶以及它与实际文件位置的关系以及设置权限等,因为显然我的知识还不够好。此外,还有其他选项处理图像,因此他们可能会选择其他解决方案,然后我将永远无法验证。再次感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-27
  • 1970-01-01
  • 1970-01-01
  • 2011-09-01
相关资源
最近更新 更多