在Coldfusion中显示BLOB对象
我有一个从Oracle数据库检索数据的查询。我正在检索的表包含一个BLOB类型的列。当我试图将其输出为在Coldfusion中显示BLOB对象,coldfusion,Coldfusion,我有一个从Oracle数据库检索数据的查询。我正在检索的表包含一个BLOB类型的列。当我试图将其输出为 <cfoutput>#query.blobColumn#</cfoutput> #query.blobColumn# 它给我的错误是“ByteArray对象无法转换为字符串”。我试着用 <cfoutput>#ToString(query.blobColumn)#</cfoutput> #ToString(query.blobColumn)#
<cfoutput>#query.blobColumn#</cfoutput>
#query.blobColumn#
它给我的错误是“ByteArray对象无法转换为字符串”。我试着用
<cfoutput>#ToString(query.blobColumn)#</cfoutput>
#ToString(query.blobColumn)#
然后它成功了,但我得到的内容是“��T�".
有没有办法显示blob(XML文件)的一些文本,如果用户单击它,我们可以显示/下载它的全部内容
这是我正在使用的代码
<cfloop query="UpdateResult">
<tr id="dataRow">
<cfloop index="ColName" `list="#UpdateResult.ColumnList#">
<cfif isBinary(UpdateResult[ColName[UpdateResult.CurrentRow])>
<td>#CharsetEncode(UpdateResult[ColName][UpdateResult.CurrentRow], "ISO- 8859-1" ) #</td>
<cfelse>
<td>#UpdateResult[ColName][UpdateResult.CurrentRow]#</td>
</cfif>
</cfloop>
</tr>
</cfloop>`
#CharsetEncode(UpdateResult[ColName][UpdateResult.CurrentRow],“ISO-8859-1”)#
#UpdateResult[ColName][UpdateResult.CurrentRow]#
`
您可以尝试使用该函数
<cfoutput>#CharsetEncode( query.blobCoulmn, "us-ascii" )#</cfoutput>
#字符集编码(query.blobCoulmn,“us ascii”)#
从文件中:
Adobe建议您使用此
函数,而不是ToString
函数,将二进制数据转换为
所有新应用程序中的字符串
它支持许多字符集,us ascii仅用作示例。希望这有帮助!您可以尝试使用该函数
<cfoutput>#CharsetEncode( query.blobCoulmn, "us-ascii" )#</cfoutput>
#字符集编码(query.blobCoulmn,“us ascii”)#
从文件中:
Adobe建议您使用此
函数,而不是ToString
函数,将二进制数据转换为
所有新应用程序中的字符串
它支持许多字符集,us ascii仅用作示例。希望这有帮助!如果BLOB是二进制数据,则将其显示为字符串将不起作用。请研究使用以二进制格式传递数据。为了让最终用户正确接收数据,您可能需要指定适当的MIME类型。如果BLOB是二进制数据,则ata,然后将其显示为字符串将不起作用。请研究如何使用以二进制格式传递数据。为了让最终用户正确接收数据,您可能需要指定适当的MIME类型。执行以下操作:� 字符出现在页面上?是的,我以表格格式显示,我得到了这个输出� 字符出现在页面上?是的,我正在以表格格式显示它,并且我得到了这个输出。好的,我正在使用一个通用代码来使用cfloop显示所有blob类型和字符串类型。当我得到非blob类型的列时,然后得到“CharsetEncode函数的参数1,现在是“”,它必须是一个有效的二进制对象“那么,我们是否可以确定它是哪种类型,如果它是BLOB类型,那么我们将使用CharsetEncode()?我认为您不能将它们称为“query.blobColumn”、“query.stringColumn”等?在没有看到代码的情况下,我能提供的最好的函数是'isBinary()。它可能会满足你的要求。嗨,我仍然遇到同样的问题。下面是我的代码。你能建议#CharsetEncode(UpdateResult[ColName][UpdateResult.CurrentRow],“ISO-8859-1”)##UpdateResult[ColName][UpdateResult.CurrentRow]#我尝试了所有的编码。。还有它的saem问题:(我不知道还有什么好建议。Ben Doom建议使用CLOB列而不是BLOB是一个好建议,也许你可以试试。XML是文本,因此应该存储在字符大对象(CLOB)中而不是BLOB。但不幸的是,我从其他应用程序数据库中获取这些结果集。因此我无法更改数据类型:(好的,我使用一个通用代码来使用cfloop显示所有BLOB类型和字符串类型。当我获得非BLOB类型的列时,我得到了“CharsetEncode函数的参数1,现在是“”,必须是有效的二进制对象”那么我们是否可以确定它是哪种类型,如果它是BLOB类型,那么我们将使用CharsetEncode()?我认为您不能将它们称为“query.blobColumn”、“query.stringColumn”“,等等?在看不到代码的情况下,我能提供的最好的函数是‘isBinary()’。它可能会满足您的要求。嗨,我仍然遇到同样的问题。下面是我的代码。您能建议使用35; CharsetEncode(UpdateResult[ColName][UpdateResult.CurrentRow],“ISO-8859-1”)##UpdateResult[ColName][UpdateResult.CurrentRow]#我尝试了所有编码..仍然是它的saem问题:(我不确定还有什么建议。Ben Doom建议使用CLOB列而不是BLOB是个好建议,也许你可以试试。XML是文本,因此应该存储在字符大对象(CLOB)中而不是BLOB。但不幸的是,我从其他应用程序数据库获得这些结果集。因此我无法更改数据类型:(嗨,Ben,我的BLOB是XML数据,而您可以使用BLOB表示XML(嘿!所有东西都是二进制的!)大多数人会使用XMLtext、text、ntext、CLOB或类似的字段。BLOB代表二进制长对象。我当然会使用CLOB表示XML数据。嗨,Ben,我的BLOB是XML数据,而你可以使用BLOB表示XML(嘿!一切都是二进制的!)大多数人会使用XMLtext、text、ntext、CLOB或类似的字段。BLOB表示二进制长对象。我当然会使用CLOB表示XML数据。