BLOB to MS Word via ASP/VBScript


S

S.

I've been researching this for two days without little success. I have
an ASP that accesses an Oracle BLOB to extract MS Word documents
(later to include excel, power point, pdf, and text). The document is
stored there via Rational ClearCase.

I'm able to access the data in the BLOB, but when I try to display it,
all I get is the garbage-looking word format inside MS Word (as it
would look if displayed in notepad or the browser itself). Any ideas,
suggestions, pointers? I've tried several approaches with different
types of errors (I'm new to ASPs and VBScript). For instance, when I
try using ADODB.Stream, I can't seem to be able to write a file (to
confirm I was opening the blob properly). The chosen directory does
have open write permissions.


set mstream = Server.CreateObject("ADODB.Stream")
mstream.Type = 1 'adTypeBinary
mstream.Open
mstream.Write rs("data")
mstream.SaveToFile "c:\test.doc", 2 'adSaveCreateOveWrite , also tried
1 for new file
'Response.BinaryWrite mstream.Read ' failes with type mismatch


The most "successful" code is below. (There may be typos since I'm
working on a separate test network and had to manually type the code
here for posting. :p)

Using:
ASP with VBScript
IIS v??? (SysAdmin unavailable!)
IE v5.5
Oracle 10 (OraOLEDB.Oracle since MSDAORA.1 was not returning
anything)
ADODB.Connection


<%
dbid = request.QueryString("dbid")
Dim rs, sql, conn

'Clear existing HTTP header information
Reponse.expires = 0
Response.Buffer = TRUE
Reponse.Clear

set conn = Server.CreateObject("ADODB.Connection")
set rs = Server.CreateObject("ADODB.Recordset")
conn.Open "Provider=OraOLEDB.Oracle;Data Source=oratest.rfc.net; User
id=***;Password=***;"

Reponse.ContentType = "application/msword"

sql = "SELECT data FROM ATTACHMENTS_BLOB where ENTITY_DBID = '" & dbid
"'"
rs.open sql, conn

Reponse.BinaryWrite rs("data") 'same results with .Value

rs.close
conn.close

%>
 
Ad

Advertisements

A

Anthony Jones

S. said:
I've been researching this for two days without little success. I have
an ASP that accesses an Oracle BLOB to extract MS Word documents
(later to include excel, power point, pdf, and text). The document is
stored there via Rational ClearCase.

I'm able to access the data in the BLOB, but when I try to display it,
all I get is the garbage-looking word format inside MS Word (as it
would look if displayed in notepad or the browser itself). Any ideas,
suggestions, pointers? I've tried several approaches with different
types of errors (I'm new to ASPs and VBScript). For instance, when I
try using ADODB.Stream, I can't seem to be able to write a file (to
confirm I was opening the blob properly). The chosen directory does
have open write permissions.


set mstream = Server.CreateObject("ADODB.Stream")
mstream.Type = 1 'adTypeBinary
mstream.Open
mstream.Write rs("data")
mstream.SaveToFile "c:\test.doc", 2 'adSaveCreateOveWrite , also tried
1 for new file
'Response.BinaryWrite mstream.Read ' failes with type mismatch


The most "successful" code is below. (There may be typos since I'm
working on a separate test network and had to manually type the code
here for posting. :p)

Using:
ASP with VBScript
IIS v??? (SysAdmin unavailable!)
IE v5.5
Oracle 10 (OraOLEDB.Oracle since MSDAORA.1 was not returning
anything)
ADODB.Connection


<%
dbid = request.QueryString("dbid")
Dim rs, sql, conn

'Clear existing HTTP header information
Reponse.expires = 0
Response.Buffer = TRUE
Reponse.Clear

set conn = Server.CreateObject("ADODB.Connection")
set rs = Server.CreateObject("ADODB.Recordset")
conn.Open "Provider=OraOLEDB.Oracle;Data Source=oratest.rfc.net; User
id=***;Password=***;"

Reponse.ContentType = "application/msword"

sql = "SELECT data FROM ATTACHMENTS_BLOB where ENTITY_DBID = '" & dbid
"'"
rs.open sql, conn

Reponse.BinaryWrite rs("data") 'same results with .Value

rs.close
conn.close

%>

This might seem like a daft question but the client does have Word installed
right?
You're comfortable that the content is Word and is stored with fidelity in
the first place?
 
Ad

Advertisements

M

Mark J. McGinty

S. said:
I've been researching this for two days without little success. I have
an ASP that accesses an Oracle BLOB to extract MS Word documents
(later to include excel, power point, pdf, and text). The document is
stored there via Rational ClearCase.

I'm able to access the data in the BLOB, but when I try to display it,
all I get is the garbage-looking word format inside MS Word (as it
would look if displayed in notepad or the browser itself). Any ideas,
suggestions, pointers? I've tried several approaches with different
types of errors (I'm new to ASPs and VBScript). For instance, when I
try using ADODB.Stream, I can't seem to be able to write a file (to
confirm I was opening the blob properly). The chosen directory does
have open write permissions.


set mstream = Server.CreateObject("ADODB.Stream")
mstream.Type = 1 'adTypeBinary
mstream.Open
mstream.Write rs("data")

You should write the value of the field to the stream, and then you must set
the stream's position to 0, before trying to read it/pass the return to
Response.BinaryWrite.

mstream.SaveToFile "c:\test.doc", 2 'adSaveCreateOveWrite , also tried
1 for new file
'Response.BinaryWrite mstream.Read ' failes with type mismatch


The most "successful" code is below. (There may be typos since I'm
working on a separate test network and had to manually type the code
here for posting. :p)

Using:
ASP with VBScript
IIS v??? (SysAdmin unavailable!)
IE v5.5
Oracle 10 (OraOLEDB.Oracle since MSDAORA.1 was not returning
anything)
ADODB.Connection


<%
dbid = request.QueryString("dbid")
Dim rs, sql, conn

'Clear existing HTTP header information
Reponse.expires = 0
Response.Buffer = TRUE
Reponse.Clear

set conn = Server.CreateObject("ADODB.Connection")
set rs = Server.CreateObject("ADODB.Recordset")
conn.Open "Provider=OraOLEDB.Oracle;Data Source=oratest.rfc.net; User
id=***;Password=***;"

Reponse.ContentType = "application/msword"

The type should be "application/vnd.ms-word".


-Mark
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top