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.
Até ai tudo bem, neste TInputDialog chamo a função abaixo:
Acontece que não estou conseguindo pegar o caminho do arquivo XML para enviar nesta linha:
Informa que não existe arquivo para enviar.
Se alguém puder dá uma idéia agradeço.
Tenho um TInputDialog como abaixo que pega as informações do registro e existe um campo TFile para enviar um arquivo XML.
- <?php
- public static function OnDialogoImportaXML( $param )
- {
- TTransaction::open('ourorio');
- $compra = new Compras($param['id_compra']);
- $form = new BootstrapFormBuilder('input_form');
- $form->setFieldSizes('100%');
- $id_compra = new THidden('id_compra');
- $nota_fiscal_emitida = $compra->nota_fiscal_emitida;
- $cliente_txt = $compra->cliente_txt;
- $xml_import = new TFile('xml_import');
- // allow just these extensions
- $xml_import->setAllowedExtensions( ['xml'] );
- $id_compra->setValue($param['id_compra']);
- $form->addFields( [new THidden('ID NF')], [$id_compra]);
- $form->addFields( [new TLabel('N.F. Nº:')], [$nota_fiscal_emitida]);
- $form->addFields( [new TLabel('Cliente:')], [$cliente_txt]);
- $row = $form->addFields( [new TLabel('Arquivo XML:'), $xml_import]);
- $row->layout = ['col-sm-12'];
- $btn1 = $form->addAction('CONFIRMAR O ENVIO DO ARQUIVO XML', new TAction([__CLASS__, 'OnImportarNfe']), 'far:check-square white');
- $btn1->class = 'btn btn-sm btn-success';
- // show the input dialog
- new TInputDialog('IMPORTAR ARQUIVO XML', $form);
- }
- ?>
Até ai tudo bem, neste TInputDialog chamo a função abaixo:
- <?php
- public static function OnImportarNfe( $param )
- {
- try
- {
- TTransaction::open('ourorio');
- $unit_id = "1";
- $unit = new SystemUnit($unit_id);
- $id_unidade = $unit;// new SystemUnit(TSession::getValue('userunitid'));
- $ambiente = $id_unidade->tipo_ambiente;
- $token = $id_unidade->token;
- $compra = new Compras($param['id_compra']);
- $xml_import = new TFile('xml_import');
- $paylod = array(
- //"xml" => base64_encode(file_get_contents('caminho do arquivo xml'))
- "xml" => base64_encode(file_get_contents('tmp/xml_import'))
- );
- $resp = self::enviaAPI($ambiente, "nfe/importa", "POST", $token, $paylod);
- if ($resp->sucesso) {
- MensagemSweetAlert::Info("{$resp->codigo} - {$resp->mensagem}");
- } else {
- // rejeição
- MensagemSweetAlert::Erro("{$resp->codigo} - {$resp->mensagem}");
- }
- TTransaction::close();
- }
- catch (Exception $e)
- {
- new TMessage('error', 'Error ' . $e->getMessage());
- TTransaction::rollback();
- }
- }
- ?>
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.
Use $param para pegar o nome do arquivo, do mesmo modo que faz com os outros campos do formulário:
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:
Acho que resolvi, modifiquei o código desta forma e enviou sem erro: