我正在使用一个 REST 服务,该服务返回一个图像块作为多部分/混合数据的一部分。内容中可以有 1 个或多个图像。此 blob 的边界在 Content-Type 中返回。如果此多部分内容的边界是,例如:b4081556-a000-48d9-a4e5-xyz345,则响应如下所示:--boundary Content-Type: image/jpeg BLOB1 --boundary Content-Type: image/jpeg BLOB2 --boundary 内容类型:图像/jpeg BLOB3 --boundary--
我需要将此响应解析为单个图像文件(blob)并将它们显示在前端。我在 ColdFusion 上这样做,并且尝试了一切都没有运气。为简单起见,我想首先使用一个带有一个图像的简单 blob。然后从中消除封装边界并将内容读入变量,但我不断收到此错误:
ColdFusion 无法从指定的源文件创建图像。确保该文件是有效的图像文件。
<cfset thumbnail_filecontent = currPageThumnail_raw_resp.fileContent.toByteArray()>
<cfset thumbnail_str = toString(thumbnail_filecontent)>
<!---remove the encapsulation boundary--->
<cfset content1 = removeChars(thumbnail_str, 1, 64)>
<cfset content2 = Left(content1, Len(content1)-43)>
<!---Convert the string into binary--->
<cfset image_content = toBinary(toBase64(content2))>
<cfimage action="INFO" source="#image_content#" structname="objImageInfo" />
<cfdump var="#objImageInfo#"><cfabort>
我也尝试使用 ImageNew() 但最终遇到了同样的错误。我不确定我是否遗漏了什么。我开始怀疑从响应中提取封装边界然后使用文件内容是正确的(也是唯一的?)方法吗?
如果这是唯一的方法,那么将字节数组转换为字符串,提取图像内容,然后将其转换回二进制文件进行处理是个好主意吗?有没有更好的办法?
这是我第一次使用多部分数据,任何帮助将不胜感激!提前致谢。
回复截图: