1

我正在尝试从远程位置获取图像,调整其大小并将其保存到 Amazon S3。

问题是,我可以将图像保存到 S3,但是当我尝试显示它时,浏览器显示image can't be displayed because it contains errors. 我确定这是因为我做了以下事情:

a) 从远程位置抓取图像:

  <cfhttp timeout="45" 
      throwonerror="no" 
      url="#variables.testFilePath#" 
      method="get" 
      useragent="Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12" 
      getasbinary="yes" 
      result="objGet">

b)创建图像以验证和调整大小

<cfset objImage = ImageNew(objGet.FileContent);

c) 调整大小后,我将调整大小的图像 (!) 转换回二进制数据,因为以下对 S3.cfc 的函数调用需要有效的文件路径才能将图像作为 binaryData 再次读取。我正在这样做:

 <cfset variables.filekey = toBase64( objImage )>

而不是这个:

 <cffile action="readBinary" file="#arguments.uploadDir##arguments.fileKey#" variable="binaryFileData">

因为我无法获得有效arguments.uploadDir的工作,所以不是在这里重新读取图像,我想我只是转换回二进制数据并将其保存到 S3。它将我的图像转换回 base64 字符串,然后我将其保存在 S3 中。

问题:
有人可以告诉我我做错了什么吗?我猜是base64 getasbinary 和toBase64。但我不确定。

感谢帮助!

4

1 回答 1

1

您无需将其转换回二进制文件。只需使用cfimage标签将其写入磁盘,然后使用路径将图像发送到亚马逊。然后在完成后删除图像。

于 2012-08-11T01:36:33.260 回答