Estiliza pagina de upload externo - responsiva (novo47)
This commit is contained in:
1 parent
05cd7b9c79
commit
631afa1c46
15 files changed
+1818
-24
No files matched your search
+116
@@ -0,0 +1,116 @@
|
||||
<?php
|
||||
// Limpar qualquer saída anterior
|
||||
ob_clean();
|
||||
ob_start();
|
||||
|
||||
// Definir cabeçalhos
|
||||
header('Content-Type: application/json');
|
||||
header('X-Content-Type-Options: nosniff');
|
||||
|
||||
require_once 'config.php';
|
||||
|
||||
try {
|
||||
// Reset de quaisquer resultados pendentes
|
||||
while ($conn->next_result()) {
|
||||
if ($res = $conn->store_result()) {
|
||||
$res->free();
|
||||
}
|
||||
}
|
||||
|
||||
// Verificar dados do POST e FILES
|
||||
if (!isset($_POST['client_id']) || !isset($_FILES['image'])) {
|
||||
throw new Exception("Dados incompletos");
|
||||
}
|
||||
|
||||
// Debug
|
||||
error_log("POST data: " . print_r($_POST, true));
|
||||
error_log("FILES data: " . print_r($_FILES, true));
|
||||
|
||||
$client_id = intval($_POST['client_id']);
|
||||
$doc_type = $_POST['doc_type'];
|
||||
|
||||
// Verificar cliente com nova conexão
|
||||
$check_client = $conn->prepare("SELECT id FROM clients WHERE id = ? LIMIT 1");
|
||||
if (!$check_client) {
|
||||
throw new Exception("Erro ao preparar consulta: " . $conn->error);
|
||||
}
|
||||
|
||||
$check_client->bind_param("i", $client_id);
|
||||
$check_client->execute();
|
||||
$result = $check_client->get_result();
|
||||
|
||||
if ($result->num_rows === 0) {
|
||||
throw new Exception("Cliente não encontrado");
|
||||
}
|
||||
$check_client->close();
|
||||
|
||||
// Criar diretório do cliente
|
||||
$client_dir = "processed/{$client_id}/";
|
||||
if (!file_exists($client_dir)) {
|
||||
if (!mkdir($client_dir, 0777, true)) {
|
||||
throw new Exception("Erro ao criar diretório");
|
||||
}
|
||||
}
|
||||
|
||||
// Verificar tipo do arquivo
|
||||
$mime_type = $_FILES['image']['type'];
|
||||
if ($mime_type !== 'application/pdf' && !strpos($mime_type, 'image/') === 0) {
|
||||
throw new Exception("Tipo de arquivo não permitido");
|
||||
}
|
||||
|
||||
// Gerar nome do arquivo sempre como PDF
|
||||
$timestamp = time();
|
||||
$filename = sprintf(
|
||||
'%s_%s_%s.pdf',
|
||||
$doc_type,
|
||||
$timestamp,
|
||||
uniqid()
|
||||
);
|
||||
$filepath = $client_dir . $filename;
|
||||
|
||||
// Se for imagem, converter para PDF
|
||||
if (strpos($mime_type, 'image/') === 0) {
|
||||
require_once 'vendor/autoload.php'; // Requer tecnickcom/tcpdf
|
||||
$pdf = new TCPDF();
|
||||
$pdf->AddPage();
|
||||
$pdf->Image($_FILES['image']['tmp_name'], 0, 0, $pdf->getPageWidth(), $pdf->getPageHeight());
|
||||
$pdf->Output($filepath, 'F');
|
||||
} else {
|
||||
// Se já for PDF, apenas mover
|
||||
move_uploaded_file($_FILES['image']['tmp_name'], $filepath);
|
||||
}
|
||||
|
||||
// Registrar no banco com nova preparação
|
||||
$insert = $conn->prepare("INSERT INTO documentos (client_id, tipo, arquivo, data_upload) VALUES (?, ?, ?, NOW())");
|
||||
if (!$insert) {
|
||||
throw new Exception("Erro ao preparar inserção: " . $conn->error);
|
||||
}
|
||||
|
||||
$insert->bind_param("iss", $client_id, $doc_type, $filepath);
|
||||
|
||||
if (!$insert->execute()) {
|
||||
unlink($filepath);
|
||||
throw new Exception("Erro ao registrar documento: " . $insert->error);
|
||||
}
|
||||
|
||||
$doc_id = $insert->insert_id;
|
||||
$insert->close();
|
||||
|
||||
// Retornar sucesso
|
||||
echo json_encode([
|
||||
'success' => true,
|
||||
'message' => 'Documento salvo com sucesso',
|
||||
'file' => $filepath,
|
||||
'id' => $doc_id
|
||||
]);
|
||||
exit();
|
||||
|
||||
} catch (Exception $e) {
|
||||
http_response_code(400);
|
||||
echo json_encode([
|
||||
'success' => false,
|
||||
'message' => $e->getMessage()
|
||||
]);
|
||||
exit();
|
||||
}
|
||||
?>
|
||||
Reference in new issue
Block a user