%@LANGUAGE="VBSCRIPT"%>
<%
'=====================================================
' Download a BOM attachment
'=====================================================
%>
<%
Option explicit
' Good idea to set when using redirect
Response.Expires = 0 ' always load the page, dont store
%>
<%
' Set rfile parameter. This is a return page after Login
Call objPMod.StoreParameter ( "rfile", "Bom_Home.asp" )
'------------ ACCESS CONTROL ------------------
%>
<%
'------------ Variable Definition -------------
Dim sFileName
Dim sPath
Dim newID
Dim retErrCode
'------------ Constants Declaration -----------
'------------ Variable Init -------------------
parBom_id = Request("bom_id")
'----------------------------------------------
%>
<%
'----------------------- MAIN LINE ---------------------------
'--- Process submition ---
If (parBom_id <> "") Then
Dim sName
Dim OraParameters
Set OraParameters = OraDatabase.Parameters
OraParameters.Add "Name" , Empty,ORAPARM_OUTPUT, ORATYPE_VARCHAR2
OraParameters.Add "ContentType" , Empty,ORAPARM_OUTPUT, ORATYPE_VARCHAR2
OraParameters.Add "PartImage" , Empty,ORAPARM_OUTPUT, ORATYPE_BLOB
Dim blobSql
blobSql = "BEGIN select DATA, NAME, CONTENTTYPE INTO :PartImage, :Name, :ContentType from BOM_ATTACHMENTS where BOM_ID=" & parBom_id & "; END;"
' Response.write "Sql:" & blobSql
OraDatabase.ExecuteSQL (blobSql)
' Response.write "
Name:" & OraParameters("Name").Value
'Get OraBlob from OraDynaset
Dim PartImage
set PartImage = OraDatabase.Parameters("PARTIMAGE").Value
'Set Offset and PollingAmount property for piecewise Read operation
PartImage.offset = 1
PartImage.PollingAmount = PartImage.Size
chunksize = 50000
'Do the first read on PartImage, buffer must be a variant
Dim AmountRead
Dim chunksize
Dim buffer
AmountRead = PartImage.Read(buffer, chunksize)
'Response.write "
DataType:" & TypeName(buffer)
'Response.write "
Data:" & AmountRead '& ":" & buffer
Response.Buffer = true
Response.Clear
Response.ContentType = OraParameters("ContentType").Value
Response.AddHeader "Content-Disposition", "attachment; filename=""" & OraParameters("Name").Value & """"
Response.Flush
Response.BinaryWrite buffer
' Check for the Status property for polling read operation
While PartImage.Status = ORALOB_NEED_DATA
AmountRead = PartImage.Read(buffer, chunksize)
'Response.write "
Data:" & AmountRead '& ":" & buffer
Response.BinaryWrite buffer
Wend
Response.Flush
Call Destroy_All_Objects
Response.End
Else
Response.write "Some mendatory parameters are missing!" & "
" 'TODO
Response.write QSTR_All
End If
Call Destroy_All_Objects
%>