我正在尝试从远程位置获取图像,调整其大小并将其保存到 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。但我不确定。
感谢帮助!