2009-12-01 3 views
0

Oracle DB에서 데이터를 검색하는 쿼리가 있습니다. 검색하는 테이블에 BLOB 유형 열이 하나 있습니다.ColdFusion에서 BLOB 객체 표시

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

로 출력하려고했을 때 "ByteArray 객체를 문자열로 변환 할 수 없습니다"라는 오류 메시지가 나타납니다. 사용해 보았습니다

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

그런데 효과가 있었지만 콘텐츠가 " t "로 표시되었습니다.

BLOB (XML 파일)의 일부 텍스트를 표시 할 수있는 방법이 있으며 사용자가 해당 텍스트를 클릭하면 전체 내용을 표시/다운로드 할 수 있습니까?

내가 당신은 CharsetEncode() 기능을 사용하여 시도 할 수 있습니다

<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>` 
+0

문자가 페이지에 나타 납니까? – mwcz

+0

예, 테이블 형식으로 표시하고 있습니다.이 출력이 있습니다. – CFUser

답변

2

을 사용하고있는 코드입니다. 문서에서

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

:

Adobe는 모든 새로운 응용 프로그램에 문자열로 이진 데이터를 변환하는 데,이 기능, 그리고 있으며, toString 기능을 사용하는 것이 좋습니다.

많은 문자 집합을 지원하며 us-ascii는 예제로만 사용됩니다. 희망이 도움이!

+0

글쎄, cfloop을 사용하여 모든 BLOB 유형 및 문자열 유형을 표시하는 공통 코드를 사용하고 있습니다. BLOB 타입이 아닌 Column을 얻었을 때 Type "이제 CharsetEncode 함수의 매개 변수 1이 유효한 바이너리 객체 여야합니다" 어쨌든 우리는 어떤 타입인지 식별 ​​할 수 있습니다. BLOB 타입 만 그런 다음 CharsetEncode()를 사용할 것인가? – CFUser

+0

"query.blobColumn", "query.stringColumn"등으로 참조 할 수 없습니까? 코드를 보지 않고서는 'isBinary()'함수 만 제공 할 수 있습니다. 당신이 요구하는대로 할 수 있습니다. – mwcz

+0

감사합니다. mwc, 잘 작동했습니다. – CFUser

2

BLOB가 2 진 데이터 인 경우 문자열로 표시하면 작동하지 않습니다. 이진 형식으로 데이터를 전달하려면 CFCONTENT을 사용하십시오. 일반 사용자가 올바르게 수신하려면 적절한 MIME 유형을 지정해야합니다.

+0

Hi Ben, 내 BLOB는 XML 데이터입니다. – CFUser

+2

XML 용 BLOB (hey! everthing은 바이너리입니다!)를 사용하는 동안 대부분의 사람들은 XMLtext, text, ntext, CLOB 또는 유사한 필드를 사용합니다. BLOB은 Binary Long OBject를 나타냅니다. –

+0

필자는 확실히 XML 데이터 용으로 CLOB를 사용합니다. – ale