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

这是我使用的代码,基本上与这个非常简单的网站(link)上的表单源匹配

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


当我CFDUMP结果时,我得到以下信息:
coldfusion - CFHTTP POST,结果是图像,如何保存-LMLPHP

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

coldfusion - CFHTTP POST,结果是图像,如何保存-LMLPHP

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

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

最佳答案

在当前的转储中,您具有已修改的映像,但是您需要以二进制数据的形式对其进行访问。通过将属性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" />


Run it on TryCF.com

10-05 19:36