首页 > 解决方案 > CFHTTP POST,结果是图像,如何保存

问题描述

我找到了一个从图像中清除 exif 数据的网站。来源可以是上传的图片或 URL。我想,也许,我可以将它与 CFHTTP 一起使用,为我发布到我的网站的图片自动执行此操作。我知道在将图像上传到我的网站之前,我可能可以通过该网站手动运行我的图像。如果您愿意,可以将此称为练习。

这是我正在使用的代码,它基本上与这个非常简单的网站(链接)上的表单源相匹配

<cfhttp method="POST" url="https://www.verexif.com/en/quitar.php" result="result"  >
    <cfhttpparam name="foto_url" type="formfield" value="{myimageurl}">
</cfhttp>

当我 CFDUMP 结果时,我得到以下信息: CFHTTP 结果的 CFDUMP

当我尝试使用 DeserializeJSON(result.Filecontent) 时,它给了我一个 ColdFusion 错误:

冷融合错误

当我在 CFHTTP 标记中对原始 URL 进行 url 编码时,result.filecontent 包含原始网站的源代码。

从上面的第一张图片可以看出,输出中包含一个名为“foto_no_exif.jpg”的文件。这是我需要下载的文件。我怎样才能做到这一点 ?

标签: coldfusionexifcfhttp

解决方案


在您当前的转储中,您拥有修改后的图像,但您需要将其作为二进制数据进行访问。getasbinary您可以通过将属性添加到cfhttp标签来强制将请求的文件内容视为二进制数据。

工作示例:

<cfset imageURL ='https://raw.githubusercontent.com/ianare/exif-samples/master/jpg/long_description.jpg'/>
<cfhttp method="get" getasbinary="yes" charset="utf-8" url="https://www.verexif.com/en/quitar.php" result="result">
    <cfhttpparam name="foto_url" type="formfield" value="#imageURL#">
</cfhttp>
<cfcontent variable="#result.Filecontent#" type="image/jpg" reset="true" />

在 TryCF.com 上运行它


推荐阅读