我正在尝试从远程位置抓取图像,调整其大小并将其保存到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。但我不确定。
感谢您的帮助!
答案 0 :(得分:1)
您无需将其转换回二进制文件。只需使用cfimage
标记将其写入磁盘,然后使用该路径将图像发送到亚马逊。然后在完成后删除图像。