D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
var
/
www
/
html
/
crsys
/
Filename :
exemplo_files.php
back
Copy
<?php // Diretórios $contratoDir = $_SERVER['DOCUMENT_ROOT'].'/crsys/adm/Contratos/1'; $pedidoDir = $_SERVER['DOCUMENT_ROOT'].'/crsys/adm/Pedidos/1'; $numero = 1207; // Número para filtrar os PDFs // ===== Processa o upload ===== $uploadArquivo = ''; $uploadMensagem = ''; if ($_SERVER['REQUEST_METHOD'] === 'POST') { if(isset($_FILES['arquivo_local'])){ if($_FILES['arquivo_local']['error'] === 0){ $extensao = strtolower(pathinfo($_FILES['arquivo_local']['name'], PATHINFO_EXTENSION)); $destino = $contratoDir . '/Nota.' . $extensao; if(!is_dir($contratoDir)){ mkdir($contratoDir,0755,true); } if(move_uploaded_file($_FILES['arquivo_local']['tmp_name'],$destino)){ $uploadArquivo = 'Nota.'.$extensao; $uploadMensagem = 'Upload realizado com sucesso!'; } else { $uploadMensagem = 'Erro ao mover o arquivo.'; } } else { $uploadMensagem = 'Erro no upload: ' . $_FILES['arquivo_local']['error']; } // Para requisições fetch (AJAX), retornamos JSON if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest'){ header('Content-Type: application/json'); echo json_encode([ 'mensagem' => $uploadMensagem, 'arquivo' => $uploadArquivo ]); exit; } } } // ===== Lista arquivos do contrato filtrando pelo número ===== $contratoFiles = []; if (is_dir($contratoDir)) { $allFiles = glob($contratoDir . '/*.pdf'); foreach($allFiles as $file){ if(strpos(basename($file), (string)$numero) !== false){ $contratoFiles[] = $file; } } } ?> <!DOCTYPE html> <html lang="pt-BR"> <head> <meta charset="UTF-8"> <title>Selecionar PDFs para envio</title> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet"> <style> .pdf-table{ display:inline-table; table-layout:auto; border-collapse:collapse; font-size:0.75rem; margin-bottom:1rem; } .pdf-table th, .pdf-table td{ padding:0.2rem 0.4rem; white-space:nowrap; border:1px solid #ccc; vertical-align:middle; } .pdf-table button{ padding:0.15rem 0.3rem; font-size:0.75rem; } .pdf-table thead th{ background-color:blue; color:#fff; } .preview-box{ position:sticky; top:20px; } </style> </head> <body class="bg-light"> <div class="container py-4"> <h2 style="font-size:1rem;">Selecionar PDFs para envio de e-mail</h2> <div class="row"> <div class="col-md-6"> <form id="uploadForm" method="POST" enctype="multipart/form-data"> <h6>Contratos</h6> <div id="listaContratos"> <?php if (!empty($contratoFiles)) : ?> <table class="pdf-table"> <thead> <tr> <th>Contrato</th> <th>Ações</th> </tr> </thead> <tbody> <?php foreach ($contratoFiles as $file): $fileName = basename($file); ?> <tr> <td><?= htmlspecialchars($fileName) ?></td> <td> <button type="button" class="btn btn-primary btn-sm" onclick="previewPDF('<?= htmlspecialchars($fileName) ?>','contrato')"> Visualizar </button> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php else: ?> <div class="alert alert-warning"> Nenhum contrato encontrado para o número <?= htmlspecialchars($numero) ?>. </div> <?php endif; ?> </div> <!-- UPLOAD --> <div class="mt-3"> <label class="form-label" style="font-size:0.8rem;"> Anexar arquivo local – será salvo como <b>Nota.*</b> </label> <input type="file" id="arquivo" name="arquivo_local" class="form-control form-control-sm"> <button type="button" class="btn btn-primary btn-sm mt-2" onclick="uploadArquivo()"> Enviar </button> </div> <div class="mt-2"> <div id="mensagemUpload"></div> </div> <div class="mt-3"> <button type="submit" class="btn btn-success btn-sm"> Ver anexos </button> </div> </form> </div> <div class="col-md-6"> <div id="pdfPreviewContainer" class="preview-box" style="display:none;"> <h6>Visualização do PDF</h6> <button type="button" class="btn btn-primary btn-sm" onclick="fecharPreview()">Fechar</button> <iframe id="pdfPreview" width="100%" height="700" style="border:1px solid #ccc;"></iframe> </div> </div> </div> </div> <script> function previewPDF(fileName,tipo){ const container = document.getElementById('pdfPreviewContainer'); const iframe = document.getElementById('pdfPreview'); let caminho=''; if(tipo==='contrato'){ caminho='/crsys/adm/Contratos/1/'+fileName; } iframe.src=caminho; container.style.display='block'; } function fecharPreview(){ const container=document.getElementById('pdfPreviewContainer'); const iframe=document.getElementById('pdfPreview'); iframe.src=''; container.style.display='none'; } // Upload via AJAX async function uploadArquivo(){ const input=document.getElementById("arquivo"); if(input.files.length===0){ alert("Selecione um arquivo"); return; } const formData=new FormData(); formData.append("arquivo_local",input.files[0]); try{ const resp=await fetch("",{ method:"POST", body:formData, headers: { 'X-Requested-With': 'XMLHttpRequest' } }); const data = await resp.json(); document.getElementById('mensagemUpload').innerHTML = `<div class="alert alert-info">${data.mensagem}</div>`; if(data.arquivo){ // Atualiza lista de contratos filtrando pelo número const lista = document.getElementById('listaContratos'); lista.innerHTML = ` <table class="pdf-table"> <thead><tr><th>Contrato</th><th>Ações</th></tr></thead> <tbody> <tr> <td>${data.arquivo}</td> <td><button type="button" class="btn btn-primary btn-sm" onclick="previewPDF('${data.arquivo}','contrato')">Visualizar</button></td> </tr> </tbody> </table> `; } } catch(e){ alert("Erro no upload: " + e.message); } } </script> </body> </html>