Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Enviar arquivo via TInputDialog Boa noite. Tenho um TInputDialog como abaixo que pega as informações do registro e existe um campo TFile para enviar um arquivo XML. ...
CM
Enviar arquivo via TInputDialog  
Boa noite.

Tenho um TInputDialog como abaixo que pega as informações do registro e existe um campo TFile para enviar um arquivo XML.

  1. <?php 
  2. public static function OnDialogoImportaXML$param )
  3.     {
  4.         TTransaction::open('ourorio');
  5.      
  6.         $compra = new Compras($param['id_compra']);
  7.         $form = new BootstrapFormBuilder('input_form');
  8.         $form->setFieldSizes('100%');
  9.         $id_compra                  = new THidden('id_compra');
  10.         $nota_fiscal_emitida        $compra->nota_fiscal_emitida;
  11.         $cliente_txt                $compra->cliente_txt;
  12.         $xml_import                 = new TFile('xml_import');
  13.         
  14.         // allow just these extensions
  15.         $xml_import->setAllowedExtensions( ['xml'] );
  16.         $id_compra->setValue($param['id_compra']);
  17.                 
  18.         $form->addFields( [new THidden('ID NF')], [$id_compra]);
  19.         $form->addFields( [new TLabel('N.F. Nº:')], [$nota_fiscal_emitida]);
  20.         $form->addFields( [new TLabel('Cliente:')], [$cliente_txt]);
  21.         $row $form->addFields( [new TLabel('Arquivo XML:'), $xml_import]);
  22.         $row->layout = ['col-sm-12'];
  23.         $btn1 $form->addAction('CONFIRMAR O ENVIO DO ARQUIVO XML', new TAction([__CLASS__'OnImportarNfe']), 'far:check-square white');
  24.         $btn1->class 'btn btn-sm btn-success';
  25.         
  26.         // show the input dialog
  27.         new TInputDialog('IMPORTAR ARQUIVO XML'$form);
  28.     }
  29. ?>


Até ai tudo bem, neste TInputDialog chamo a função abaixo:

  1. <?php 
  2. public static function OnImportarNfe$param )
  3.     {
  4.         try
  5.         {
  6.             TTransaction::open('ourorio');
  7.             $unit_id "1";
  8.             $unit = new SystemUnit($unit_id);
  9.             $id_unidade $unit;// new SystemUnit(TSession::getValue('userunitid'));            
  10.             $ambiente $id_unidade->tipo_ambiente;
  11.             $token $id_unidade->token;
  12.             $compra = new Compras($param['id_compra']);
  13.             
  14.             $xml_import = new TFile('xml_import');
  15.             $paylod = array(
  16.                 //"xml" => base64_encode(file_get_contents('caminho do arquivo xml'))
  17.                 "xml" => base64_encode(file_get_contents('tmp/xml_import'))
  18.             );
  19.             $resp self::enviaAPI($ambiente"nfe/importa""POST"$token$paylod);
  20.             if ($resp->sucesso) {
  21.                 MensagemSweetAlert::Info("{$resp->codigo} - {$resp->mensagem}");
  22.             } else {
  23.                 // rejeição
  24.                 MensagemSweetAlert::Erro("{$resp->codigo} - {$resp->mensagem}");
  25.             }
  26.             TTransaction::close();
  27.         }
  28.         catch (Exception $e)
  29.         {
  30.             new TMessage('error''Error ' $e->getMessage());
  31.             TTransaction::rollback();
  32.         }
  33.     }
  34. ?>


Acontece que não estou conseguindo pegar o caminho do arquivo XML para enviar nesta linha:
"xml" => base64_encode(file_get_contents('tmp/xml_import'))


Informa que não existe arquivo para enviar.
Se alguém puder dá uma idéia agradeço.

Curso completo Meu Negócio Pronto
Use para si, ou transforme em um negócio: Inclui aulas e códigos-fontes
Gestor de conteúdo (SITE) + Loja Virtual (E-Commerce) + Emissor de Notas para infoprodutos


Meu negócio pronto Quero me inscrever agora!

Comentários (3)


NR

Use $param para pegar o nome do arquivo, do mesmo modo que faz com os outros campos do formulário:
  1. <?php
  2. $arquivo $param['xml_import'];
  3. ?>
CM

Olá Nataniel, obrigado pela ajuda, acho que ainda estou errando.

Fiz um var_dump e ele retorna o nome do arquivo conforme imagem.

https://zeromeia.com/sistemas/clientes/web/ourorio/app/images/erro_xml.png

Mas não envia.

O código ficou assim:
  1. <?php 
  2. public static function OnImportarNfe$param )
  3.         {
  4.             try
  5.             {
  6.                 TTransaction::open('ourorio');
  7.                 $unit_id "1";
  8.                 $unit = new SystemUnit($unit_id);
  9.                 $id_unidade $unit;// new SystemUnit(TSession::getValue('userunitid'));            
  10.                 $ambiente $id_unidade->tipo_ambiente;
  11.                 $token $id_unidade->token;
  12.                 $compra = new Compras($param['id_compra']);
  13.                 
  14.                 $arquivo $param['xml_import'];
  15.                 var_dump($arquivo);
  16.                 $paylod = array(
  17.                   "xml" => base64_encode(file_get_contents('tmp/arquivo'))
  18.                 );
  19.                 $resp self::enviaAPI($ambiente"nfe/importa""POST"$token$paylod);
  20.                 if ($resp->sucesso) {
  21.                     MensagemSweetAlert::Info("{$resp->codigo} - {$resp->mensagem}");
  22.                 } else {
  23.                     // rejeição
  24.                     MensagemSweetAlert::Erro("{$resp->codigo} - {$resp->mensagem}");
  25.                 }
  26.                 TTransaction::close();
  27.             }
  28.             catch (Exception $e)
  29.             {
  30.                 new TMessage('error''Error ' $e->getMessage());
  31.                 TTransaction::rollback();
  32.             }
  33.         }
  34. ?>


CM

Acho que resolvi, modifiquei o código desta forma e enviou sem erro:

  1. <?php 
  2. $arquivo $param['xml_import'];
  3.                 //var_dump($arquivo);
  4.                 $paylod = array(
  5.                     //"xml" => base64_encode(file_get_contents('caminho do arquivo xml'))
  6.                     "xml" => base64_encode(file_get_contents('tmp/'$arquivo))
  7.                 );
  8. ?>