Páginas filhas
  • MPFilesBinary

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

Métodos:

  • New()

    • Sintaxe:

      • MPFilesBinary():New() → oFb

    • Descrição:

      • Instância a classe MPFilesBinary()

    • Parâmetros:

      • Vazio

    • Retorno:

      • oFb → Objeto - Objeto da classe MPFilesBinary()
  • Register()

    • Sintaxe:

      • MPFilesBinary():Resgister( lShowProcess ) → aRet
    • Descrição:

      • Registra os dados na FILES_BINARY
    • Parâmetros:

      • NomeTipoDescriçãoObrigatórioPadrão
        lShowProcessLógicoDefine se exibe barra de processamentoX
    • Retorno:

      • aRet → Array - Se processado com sucesso retorna lista do arquivo com seu UUID registrado.

        aRet[1][1] - Caminho do arquivo. Ex.: 'C:/TOTVS/arquivo.txt'
        aRet[1][2] - UUID registrado
  • WriteFB()

    • Sintaxe:

      • MPFilesBinary():WriteFB( oProcess, lEnd )
    • Descrição:

      • Grava os dados na FILES_BINARY
    • Parâmetros:

      • NomeTipoDescriçãoObrigatórioPadrão
        oProcessObjetoObjeto da barra de processamento
        NIL
        lEndLógicoPassado como referência, recebe se houve cancelamento durante o processo
        .F.
    • Retorno:

      • Vazio

  • ReadFB()

    • Sintaxe:

      • MPFilesBinary():ReadFB( cUUID, cDir, cArq, lAskOver ) → lOk
    • Descrição:

      • Leitura dos dados na FILES_BINARY

    • Parâmetros:

      • NomeTipoDescriçãoObrigatórioPadrão
        cUUIDCaracterUUID do File BinaryX
        cDirCaracterDiretório ondo o arquivo será gravado.X
        cArqCaracterNome do arquivo.X
        lAskOverLógicoIndica se pergunta se deve sobrepor o arquivo.
        .T.
    • Retorno:

      • lOk → Lógico - Status do processamento
  • DeleteFB()

    • Sintaxe:

      • MPFilesBinary():DeleteFB( cUUID ) → lDeleted
    • Descrição:

      • Deleta o arquivo no banco de dados (Delete físico).
    • Parâmetros:

      • NomeTipoDescriçãoObrigatórioPadrão
        cUUIDCaractereUUID do File BinaryX
    • Retorno:

      • lDeleted → Lógico - Indica se foi possível a deleção
  • GetFB()

    • Sintaxe:

      • MPFilesBinary():GetFB()
    • Descrição:

      • Getter File/Lista de arquivos atribuída para processamento
    • Parâmetros:

      • Vazio
    • Retorno:

      • Vazio ou Arquivo/Lista
  • SetFB()

    • Sintaxe:

      • MPFilesBinary():SetFB( xFiles ) → lOk
    • Descrição:

      • Setter arquivo/lista que será processada
    • Parâmetros:

      • NomeTipoDescriçãoObrigatórioPadrão
        xFilesCaractere ou ArrayPode ser um arquivo ou lista de arquivosX
    • Retorno:

      • lOk -> Lógico - Sucesso na atribuição
  • SetBlockSize()

    • Sintaxe:

      • MPFilesBinary():SetBlockSize( nSize )
    • Descrição:

      • Setter tamanho Blocksize para read/write do file
    • Parâmetros:

      • NomeTipoDescriçãoObrigatórioPadrão
        nSizeNuméricoTamanho do Blocksize
        1mb
    • Retorno:

      • Vazio
  • SizeFB()

    • Sintaxe:

      • MPFilesBinary():SizeFB( cUUID, cUnitOfMeasurement, , lRound, nRound ) → cSize 
    • Descrição:

      • Verifica o tamanho de um determinado arquivo no banco de dados
    • Parâmetros:

      • NomeTipoDescriçãoObrigatórioPadrão
        cUUIDCaracterUUID do File BinaryX
        cUnitOfMeasurementCaracterUnidade de medida que será retornado o tamanho do arquivo
        'B'
        lRoundLógicoIndica se será ou não arredondado o tamanho do arquivo
        .F.
        nRoundNuméricoIndica a quantidade de casas decimais para arredondamento.
        3
    • Retorno:

      • cSize → Caractere - Tamanho do arquivo
  • saveAlias()

    • Sintaxe:

      • MPFilesBinary():saveAlias()
    • Descrição:

      • Guarda a área de trabalho inicial
    • Parâmetros:

      • Vazio
    • Retorno:

      • Vazio
  • restoreAlias()

    • Sintaxe:

      • MPFilesBinary():restoreAlias()
    • Descrição:

      • Restaura a área de trabalho inicial
    • Parâmetros:

      • Vazio
    • Retorno:

      • Vazio

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.

	/**Instância 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 atribuída 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 diretório 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 possível 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
  • Sem rótulos