在Coldfusion中显示BLOB对象

在Coldfusion中显示BLOB对象,coldfusion,Coldfusion,我有一个从Oracle数据库检索数据的查询。我正在检索的表包含一个BLOB类型的列。当我试图将其输出为 <cfoutput>#query.blobColumn#</cfoutput> #query.blobColumn# 它给我的错误是“ByteArray对象无法转换为字符串”。我试着用 <cfoutput>#ToString(query.blobColumn)#</cfoutput> #ToString(query.blobColumn)#

我有一个从Oracle数据库检索数据的查询。我正在检索的表包含一个BLOB类型的列。当我试图将其输出为

<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数据。