Classe responsável por manipular arquivos Binary no banco de conhecimento.

Métodos:

Exemplo:


#Include 'protheus.ch'

/*{Protheus.doc}User function TstFBin() 


Função de teste - DDL da FILES_BINARY e usabilidade da classe MPFilesBinary
e utilização

*/
User function TstFBin() 

Local oFB          AS OBJECT

Local aProcess     AS ARRAY
Local aReturn      AS ARRAY

Local nA           AS NUMERIC

Local cFileName    AS CHARACTER
Local cDrive       AS CHARACTER
Local cDir         AS CHARACTER
Local cNome        AS CHARACTER
Local cExt         AS CHARACTER
Local cSize        AS CHARACTER

Local lShowProcess AS LOGICAL
Local lDeleted     AS LOGICAL

    lShowProcess := .T.

	/**Intancia a classe FILES_BINARY */
	oFB := MPFilesBinary():New()


    /**Nova Dialog para seleção de arquivos 
    - Função disponível apenas em builds superiores a 7.00.170117A.
    - Função não disponível para Smartclient Webapp (via Browser), nesse caso utilizar a cGetFile.*/
	cFileName := tFileDialog( "All files (*.*) ","Arquivo",,, .F.  )



    /** Seta o arquivo/lista que será processada
    Pode ser passado uma lista de arquivos, Exemplo:
    aFiles := {c:\tmp\file1,c:\tmp\file2,c:\tmp\file3} */
    oFB:SetFB( cFileName )



    /** Retorna a lista de arquivos atribuida para processamento*/
    aProcess := oFB:GetFB( cFileName )
    VarInfo("Arquivos a serem processados", aProcess)



    /**Permite setar um novo BlockSize para read/write do file 
    Default (1024 * 1024)*/
    oFB:SetBlockSize(2048 * 1024)



    /**Grava os dados na FILES_BINARY 
    lShowProcess - Se utiliza barra de processando
    Method Register, Se processado com sucesso retorna a array. aRet[n][1] Arquivo processado 
                                                                aRet[n][2] UUID registrado do arquivo*/
    aReturn := oFB:Register(lShowProcess)
    VarInfo("Arquivos processados", aReturn)



    /**Irá fazer o download do arquivo no diretorio original (utilizado na tFileDialog) */
    If !Empty( aReturn )

            For nA := 1 To Len( aReturn )
                
                SplitPath( aReturn[nA][1], @cDrive, @cDir, @cNome, @cExt )


                /**Recupera o arquivo gravado na FILES_BINARY 
                @param 1 cUUID    | character | UUID do File Binary
                @param 2 cDir     | character | Diretorio onde arquivo sera gravado
                @param 3 cArq     | character | Nome do arquivo
                @param 4 lAskOver | logical   | Indica se pergunta se deve sobrepor o arquivo. Padrão .T. 

                @return Logical, se o processamento foi executado com sucesso.
                */
                oFB:ReadFB( aReturn[nA][2] , cDrive+cDir , "ryve_" + cValToChar(nA) + "_" + cNome + cExt) 
            

                /**Verifica o tamanho do arquivo no banco de dados 
                @param 1 cUUID              | Character | UUID do File Binary
                @param 2 cUnitOfMeasurement | Character | Unidade de medida que será retornado o tamanho do arquivo
                @param 3 lRound             | Logical   | Indica se será ou não arredondado o tamanho do arquivo 
                @param 4 nRound             | Numeric   | Indica a quantidade de casas decimais para arredondamento. Opcional. Padrão 3 

                @return cSize               | Character | Tamanho do arquivo 
                */
                cSize := oFB:SizeFB(aReturn[nA][2])

                /**Deleta um arquivo no banco de dados 
                @param cUUID         | Character | UUID do File Binary

                @return lDeleted     | Logical | Indica se foi possivel a deleção  
                */
                lDeleted := oFB:DeleteFB(aReturn[nA][2])


                MSGINFO( "Arquivo : " + aReturn[nA][1] + CRLF + ;
                         "UUID    : " + aReturn[nA][2] + CRLF + ;
                         "Tamanho : " + cSize          + CRLF + ;
                         "Deletado com sucesso : " +  cValToChar(lDeleted) + CRLF + ;
                         "Local de download : " + (cDrive + cDir + "TstFBin_" + cValToChar(nA) + "_" + cNome + cExt) + CRLF ,;
                         "Informações";
                       )

            Next nA

    EndIf

Return