coldfusion - 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>
当我尝试使用 DeserializeJSON(result.Filecontent) 时,它给了我一个 ColdFusion 错误:
当我在 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" />
推荐阅读
- java - 需要帮助弄清楚 paintComponent 函数在 javax.Swing 中是如何工作的
- visual-c++ - 每个节点选择哪个变量
- ionic-framework - 运行 ionic serve 时出现问题和错误
- java - 如何处理一段 Selenium 代码中的错误,该代码在一台计算机上运行良好而在另一台计算机上失败?
- android - Flutter - 获取唯一的设备 ID
- reactjs - 如何将数据发布到谷歌表格?
- c# - 从不同的函数访问类对象
- java - 使用spark时如何确保属于用户的所有数据都转到同一个文件?
- jquery - 如何修复仅在第二次单击时触发的 jQuery 函数?
- assembly - 使用堆栈指针对 MIPS 中的数组进行排序