diff --git a/app.php b/app.php index 08c2543..5dffadb 100644 --- a/app.php +++ b/app.php @@ -102,7 +102,7 @@ if($f3->get('PDF_DEMO_LINK') === null || $f3->get('PDF_DEMO_LINK') === true) { } } -$f3->route('GET /', +$f3->route('GET|HEAD /', function($f3) { $f3->set('activeTab', 'index'); echo View::instance()->render('index.html.php'); @@ -501,13 +501,27 @@ $f3->route('GET /api/file/get', function($f3) { } $pdf_path = $localRootFolder . '/' . $f3->get('GET.path'); $pdf_filename = basename($pdf_path); - if (!preg_match('/.pdf$/', $pdf_path)) { + $extension = 'pdf'; + if (preg_match('/.(pdf|png|jpg|jpeg)$/', $pdf_path, $m)) { + $extension = $m[1]; + }else{ $f3->error(403); } if (!file_exists($pdf_path)) { $f3->error(403); } - header('Content-type: application/pdf'); + switch ($extension) { + case 'jpg': + case 'jpeg': + header('Content-type: image/jpg'); + break; + case 'png': + header('Content-type: image/png'); + break; + default: + header('Content-type: application/pdf'); + break; + } header("Content-Disposition: attachment; filename=$pdf_filename"); echo file_get_contents($pdf_path); }); @@ -519,13 +533,16 @@ $f3->route('PUT /api/file/save', function($f3) { } $pdf_path = $localRootFolder . '/' . $f3->get('GET.path'); $pdf_filename = basename($pdf_path); - if (!preg_match('/.pdf$/', $pdf_path)) { + if (preg_match('/(.*).(pdf|png|jpg|jpeg)$/', $pdf_path, $m)) { + $basefile = $m[1]; + $extension = $m[2]; + }else{ $f3->error(403); } if (!file_exists($pdf_path)) { $f3->error(403); } - file_put_contents($pdf_path, $f3->get('BODY')); + file_put_contents($basefile.'.pdf', $f3->get('BODY')); }); diff --git a/public/js/common.js b/public/js/common.js index 0097f09..ce7bd10 100644 --- a/public/js/common.js +++ b/public/js/common.js @@ -79,8 +79,14 @@ async function loadFileFromUrl(url, pageUrl, local = null) { if(response.headers.has('content-disposition') && response.headers.get('Content-Disposition').match(/attachment; filename="/)) { file_id = response.headers.get('Content-Disposition').replace(/^[^"]*"/, "").replace(/"[^"]*$/, "").replace(/_signe-[0-9]+\x.pdf/, '.pdf'); } - - if(pdfBlob.type != 'application/pdf' && pdfBlob.type != 'application/octet-stream') { + filetype = 'application/pdf'; + if(pdfBlob.type == 'application/pdf' || pdfBlob.type == 'application/octet-stream') { + filetype = 'application/pdf'; + }else if (pdfBlob.type == 'image/jpg' || pdfBlob.type == 'image/jpeg') { + filetype = 'image/jpg'; + }else if (pdfBlob.type == 'image/png') { + filetype = 'image/png'; + }else{ return; } let dataTransfer = new DataTransfer(); @@ -88,7 +94,7 @@ async function loadFileFromUrl(url, pageUrl, local = null) { file_id = local; } dataTransfer.items.add(new File([pdfBlob], file_id, { - type: 'application/pdf' + type: filetype })); document.getElementById('input_pdf_upload').files = dataTransfer.files; endLoading()