Отобразить объекты BLOB в Coldfusion - PullRequest
0 голосов
/ 01 декабря 2009

У меня есть запрос, который получает данные из базы данных Oracle. Таблица, которую я получаю, содержит один столбец типа BLOB. Когда я попытался вывести его как

<cfoutput>#query.blobColumn#</cfoutput>

Это дает мне ошибку "Объекты ByteArray не могут быть преобразованы в строки". Я пытался использовать

<cfoutput>#ToString(query.blobColumn)#</cfoutput>

Тогда это сработало, но я получаю контент как " t ".

Можно ли каким-то образом отобразить некоторый текст большого двоичного объекта (файл 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>`

Ответы [ 2 ]

2 голосов
/ 01 декабря 2009

Если большой двоичный объект представляет собой двоичные данные, его отображение в виде строки не будет работать. Попробуйте использовать CFCONTENT для доставки данных в двоичном формате. Чтобы конечный пользователь мог правильно его получить, вам, вероятно, потребуется указать соответствующий тип MIME.

2 голосов
/ 01 декабря 2009

Вы можете попробовать использовать функцию CharsetEncode () .

<cfoutput>#CharsetEncode( query.blobCoulmn, "us-ascii" )#</cfoutput>

Из документации:

Adobe рекомендует использовать это функция, а не ToString функция, чтобы преобразовать двоичные данные в строки во всех новых приложениях.

Поддерживает множество наборов символов, us-ascii используется только в качестве примера. Надеюсь, это поможет!

...