Classe responsável por manipular arquivos Binary no banco de conhecimento.
Métodos:
New()
Sintaxe:
Descrição:
Parâmetros:
Retorno:
- oFb → Objeto - Objeto da classe MPFilesBinary()
Register()
Sintaxe:
- MPFilesBinary():Resgister( lShowProcess ) → aRet
Descrição:
- Registra os dados na FILES_BINARY
Parâmetros:
Nome | Tipo | Descrição | Obrigatório | Padrão |
---|
lShowProcess | Lógico | Define se exibe barra de processamento | X |
|
Retorno:
WriteFB()
Sintaxe:
- MPFilesBinary():WriteFB( oProcess, lEnd )
Descrição:
- Grava os dados na FILES_BINARY
Parâmetros:
Nome | Tipo | Descrição | Obrigatório | Padrão |
---|
oProcess | Objeto | Objeto da barra de processamento |
| NIL |
lEnd | Lógico | Passado como referência, recebe se houve cancelamento durante o processo |
| .F. |
Retorno:
ReadFB()
Sintaxe:
- MPFilesBinary():ReadFB( cUUID, cDir, cArq, lAskOver ) → lOk
Descrição:
Parâmetros:
Nome | Tipo | Descrição | Obrigatório | Padrão |
---|
cUUID | Caracter | UUID do File Binary | X |
|
cDir | Caracter | Diretório ondo o arquivo será gravado. | X |
|
cArq | Caracter | Nome do arquivo. | X |
|
lAskOver | Lógico | Indica 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:
Nome | Tipo | Descrição | Obrigatório | Padrão |
---|
cUUID | Caractere | UUID do File Binary | X |
|
Retorno:
- lDeleted → Lógico - Indica se foi possível a deleção
GetFB()
Sintaxe:
Descrição:
- Getter File/Lista de arquivos atribuída para processamento
Parâmetros:
Retorno:
SetFB()
Sintaxe:
- MPFilesBinary():SetFB( xFiles ) → lOk
Descrição:
- Setter arquivo/lista que será processada
Parâmetros:
Nome | Tipo | Descrição | Obrigatório | Padrão |
---|
xFiles | Caractere ou Array | Pode ser um arquivo ou lista de arquivos | X |
|
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:
Nome | Tipo | Descrição | Obrigatório | Padrão |
---|
nSize | Numérico | Tamanho do Blocksize |
| 1mb |
Retorno:
SizeFB()
Sintaxe:
- MPFilesBinary():SizeFB( cUUID, cUnitOfMeasurement, , lRound, nRound ) → cSize
Descrição:
- Verifica o tamanho de um determinado arquivo no banco de dados
Parâmetros:
Nome | Tipo | Descrição | Obrigatório | Padrão |
---|
cUUID | Caracter | UUID do File Binary | X |
|
cUnitOfMeasurement | Caracter | Unidade de medida que será retornado o tamanho do arquivo |
| 'B' |
lRound | Lógico | Indica se será ou não arredondado o tamanho do arquivo |
| .F. |
nRound | Numérico | Indica 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:
Retorno:
restoreAlias()
Sintaxe:
- MPFilesBinary():restoreAlias()
Descrição:
- Restaura a área de trabalho inicial
Parâmetros:
Retorno:
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