Subversion Repositories DevTools

Rev

Rev 5513 | Blame | Compare with Previous | Last modification | View Log | RSS feed

<%@LANGUAGE="VBSCRIPT"%>
<%
'=====================================================
'                  Download a BOM attachment
'=====================================================
%>
<%
Option explicit
' Good idea to set when using redirect
Response.Expires = 0    ' always load the page, dont store
%>

<!--#include file="common/config.asp"-->
<!--#include file="common/globals.asp"-->
<!--#include file="common/formating.asp"-->
<!--#include file="common/qstr.asp"-->
<!--#include file="common/common_subs.asp"-->
<!--#include file="common/common_dbedit.asp"-->
<%
' Set rfile parameter. This is a return page after Login
Call objPMod.StoreParameter ( "rfile", "Bom_Home.asp" )
'------------ ACCESS CONTROL ------------------
%>
<!--#include file="_access_control_general.asp"-->
<%
'------------ 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 "<br>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 "<br>DataType:" &  TypeName(buffer) 
'Response.write "<br>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 "<br>Data:" &  AmountRead '& ":" & buffer 
        Response.BinaryWrite  buffer
    Wend 
    Response.Flush
    Call Destroy_All_Objects
    Response.End

Else
    Response.write "Some mendatory parameters are missing!" & "<br>" 'TODO
    Response.write QSTR_All 
    
End If
Call Destroy_All_Objects
%>