PDA

View Full Version : download che scarica le imagini vuote


roccochioloMO
04-07-2025, 17:05
buongiorno ho il problema con i download :
con il metodo GET invio dentro una funzione l id che a sua volta esttae il nome da database e scarica il file , solamente che immagini le scarica ma sono vuote perche? dove sto sbagliando? grazie


function downloadAttachmentKb($filesid){
global $dbcore;

if(!$filesid){
return false;
}
if($dbcore->querycount("SELECT * FROM `kbattachment` WHERE `fileid` ='".intval($filesid)."' ")>0){
$row = $dbcore->getquery("SELECT * FROM `kbattachment` WHERE `fileid` ='".intval($filesid)."' ");
if(empty($row['filenamemanipolato'])){
return false ;
}
if (!file_exists("./files/kbfiles/". trim($row['filenamemanipolato']))){
die("Files non trovato");
}
if (file_exists("./files/kbfiles/". trim($row['filenamemanipolato'])))
{
header('Content-Description: File Transfer');
$mimetype = mime_content_type("./files/kbfiles/". $row['filenamemanipolato']);
if (!empty($mimetype))
{
header("Content-Type: " . $mimetype);
} else {
header("Content-Type: application/force-download");
}
header('Content-Disposition: attachment; filename="' . basename("./files/kbfiles/".$row['filenamemanipolato']) . '"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public'); header('Content-Length: ' . filesize("./files/kbfiles/".$row['filenamemanipolato']));
ob_clean();
flush();
readfile("./files/kbfiles/".$row['filenamemanipolato']);
exit;

}
}


}

roccochioloMO
06-07-2025, 01:13
perfavore mi date una mano ? grazie mille a tutti !

roccochioloMO
19-07-2025, 04:50
Salve secondo voi dove sbaglio ancora oggi dopo due settimane non riesco a trovare una soluzione percortesia aiuto grazie

SysLack
20-07-2025, 21:50
Hai già provato a chiedere a qualche AI di spiegarti come correggere o migliorare il codice? Personalmente non so come aiutarti.

roccochioloMO
21-07-2025, 22:25
ti ringrazio per la risposta l apprezzo molto, si ho provato a chiedere ma nessuno risponde anche in altri forum e sono fermo purtroppo
grazie ancora saluti rocco

wingman87
23-07-2025, 21:18
Ciao, non so come risolvere ma ti consiglio di

scrivere meglio il codice, ad esempio
"./files/kbfiles/". trim($row['filenamemanipolato'])
ripetuto 6 volte non si può vedere, mettilo in una variabile e usa quella. In generale cura di più la leggibilità, il codice non è neanche indentato bene (questo potrebbe essere dovuto al fatto che potresti aver mescolato tab e spazi, quindi se i tab non sono rappresentati con il giusto numero di spazi, il risultato non si vede bene, imposta l'editor che usi per inserire sempre N spazi al posto dei tab)
aprire nel browser gli strumenti per sviluppatore (in genere si aprono con F12) e nella scheda network (rete in italiano) vedere la richiesta/risposta, magari c'è qualche blocco del browser o qualche altro problema che diventa evidente, prova anche a vedere nella scheda debug
debuggare per capire se tutte le istruzioni vengono eseguite correttamente

Shirov
26-07-2025, 23:38
Puoi provare a forzare il download con
header("Content-Type: application/octet-stream");

gaetanovirg
03-08-2025, 11:26
Puoi provare a forzare il download con
header("Content-Type: application/octet-stream");


esatto

antonio338
09-09-2025, 15:48
Presumo che da qualche parte prima di chiamare la funzione tu abbia ob_start() da qualche parte, dal momento che chiami ob_clean()
Così facendo però continui a catturare il contenuto del buffer, quindi ti direi di sostuire ob_clean() con ob_end_clean() oppure mettere ob_flush() dopo readfile().

Ciao