<%@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 %>