[PHP] Pulsante SUBMIT per download diretto dei file

spider81man

Utente Attivo
7 Lug 2018
26
0
1
Roma
Ciao a tutti ragazzi,
ho bisogno che se clicco un pulsante di tipo submit mi parta una funzione che faccia poi partire il download.
Questo mi serve perchè così posso tracciare l'utente che ha scaricato il file mettendo il tutto in un DB.
Sapete aiutarmi?
Grazie
spider81man
 
Ultima modifica:

macus_adi

Utente Attivo
5 Dic 2017
1.343
91
48
IT/SW
Quando chiami il submit, la funzione "finale" dovrebbe avere settato l'header in base al content type così da poter effettuare il download:
PHP:
header("Content-type:application/pdf");

// It will be called downloaded.pdf
header("Content-Disposition:attachment;filename='downloaded.pdf'");

// The PDF source is in original.pdf
readfile("original.pdf");
Preso da w3c https://www.w3schools.com/php/func_http_header.asp
 

spider81man

Utente Attivo
7 Lug 2018
26
0
1
Roma
Ciao,
guarda ho fatto cosi

PHP:
header("Content-Disposition:attachment;filename='$path_down'

dove $path_down è la variabile con il puntamento al file esatto. La cosa strana è che dentro la variabile vi è questo percorso ad esempio "uploadtest/treno.jpg" mentre se clicco su download mi da "uploadtest_treno.jpg" sostituisce la / con _ per questo no mi fa scaricare il file.
Sa dirmi come mai??
 

macus_adi

Utente Attivo
5 Dic 2017
1.343
91
48
IT/SW
filename='$path_down'
In realtà qui andrebbe il nome del file e non il percorso...

Invece qui ci va il percorso!
PHP:
readfile("original.pdf");

Quindi ricapitolando;
PHP:
header("Content-type:application/pdf");

// It will be called downloaded.pdf
header("Content-Disposition:attachment;filename='SOLO_NOME_DEL_FILE.pdf'");

// The PDF source is in original.pdf
readfile("/VAR/WWW/DOVE/SI/TROVA/IL/FILE/FILE.pdf");
 

spider81man

Utente Attivo
7 Lug 2018
26
0
1
Roma
Grazie per la celere risposta,
ho scritto così
PHP:
// It will be called downloaded.pdf
    header("Content-Disposition:attachment;filename=$nome_file");
    
// The PDF source is in original.pdf
    readfile("/uploadtest");

Mi fa scaricare il file ma non me lo fa aprire e mi da la risposta che vedi nell'immagine, cioè "IMPOSSIBILE CARICARE L'IMMAGINE. Errore nell'interpretare la jpeg".
Sai dirmi come mai??
Grazie
 

Allegati

  • schermata.png
    schermata.png
    77,6 KB · Visite: 239

spider81man

Utente Attivo
7 Lug 2018
26
0
1
Roma
Lo script è tutto questo
PHP:
if (isset($_POST["Download"])) {
    $search_desc = $_REQUEST['search_desc'];
    $search_proc_pen = $_REQUEST['search_proc_pen'];
    $id_file = $_REQUEST['id_file'];
    $nome_file= $_REQUEST['nome_file'];
    $path_down=$_REQUEST['path'];
    $orario_download= date("d-m-Y H:i:s");
    $query_download = "INSERT into `download` (cip_down, id_file, nome_file , orario_download)
              VALUES ('$cip','$id_file','$nome_file', '$orario_download')";
    $result = mysqli_query($con,$query_download) or die(mysql_error());

// It will be called downloaded.pdf
    header("Content-Disposition:attachment;filename=$nome_file");
   
// The PDF source is in original.pdf
    readfile("/uploadtest");  

}

Il problema è che non mi inserisce neanche i dati nel DB se metto "header" è come se si bloccasse tutto e da li in avanti non legga più nulla.

EDIT:

Facendo delle prove ho notato che se commento SOLO

PHP:
header("Content-Disposition:attachment;filename=$nome_file");

Mi finisce la funzione e mi fa quindi l'inserimento nel DB quindi dive essere questa parte che lo manda in paranoia
1f603.png
 
Ultima modifica:

macus_adi

Utente Attivo
5 Dic 2017
1.343
91
48
IT/SW
Spezza il flusso in 2 parti:

funzione per inserire i dati con valore di ritorno
Header per scaricare il file:
PHP:
function insert_in_db($data,$map){

try{

//mysql e ciò che vuoi che venga eseguito
   return TRUE;
  } catch(Exception $e){
     return FALSE;
}


}
if(insert_in_db(data,$map){

     header_etc....

    }else {
    //errore
}
Prova a strutturare un pò il codice, così hai i break point da poter analizzare e non tutto in IF!
 

spider81man

Utente Attivo
7 Lug 2018
26
0
1
Roma
per scaricare il file al click ho fatto cosi

HTML:
><a href="<?php echo $path?>" download="<?php echo $path?>" onclick="show_alert()"><?php echo $path?></a></td>

Mi scarica il file tranquillamente, ora sto facendo richiamare una funzione che mostra una alert box ma a questo punto potrei da li fare l'inserimento con sul DB? Come sarebbe la sintassi?
Grazie
 

spider81man

Utente Attivo
7 Lug 2018
26
0
1
Roma
Ragazzi buongiorno,
io non riesco a capire come mai se metto tutto il codice di cui sopra e commento la parte
/*
header("Content-type:application/pdf");
header("Content-Disposition:attachment;filename=$nome_file");
readfile("/uploadtest");
*/
Mi effettua tranquillamente la query e mi inserisce i dati nel DB, mentre se tolgo i commenti al CLICK mi parte il download del File, che mi dice essere danneggiato una volta scaricato, ma non mi fa la query.
Sto impazzendo!!!
 

spider81man

Utente Attivo
7 Lug 2018
26
0
1
Roma
Ho trovato una soluzione, non molto elegante lo so ma intanto per ora facciamocela bastare.
In praica alla fine dello script download metto

header("Location: uploadtest/"$nome_file");

così mi apre direttamente il file che sia IMG o PDF, visto che non riesco a scaricarlo almeno lo vedo sujl browser e poi lo scarico.
Ora la mia domanda è, come faccio a far aprire una NUOVA PAGINA con header?
Grazie
 
Discussioni simili
Autore Titolo Forum Risposte Data
M [PHP] [HTML] Centrare in verticale un pulsante in una tabella PHP 3
C [PHP] Aggiungere pulsante paypal PHP 2
C [PHP] Creare un Pulsante che ricopia valori di un campo in altro record PHP 4
L php - pulsante premuto che mostra #div PHP 3
M Creare tabella da pulsante php PHP 6
Occhioverde [PHP] Incrementare variabile al click di un pulsante PHP 5
D [WordPress] [PHP] Pulsante per auto riempire i campi in un modulo WordPress 1
S [PHP] Abilitare un pulsante dopo scelta file... PHP 3
Z [PHP] Informazione al pulsante REFRESH PHP 2
G Ciclo if php per far comparire un pulsante solo nel caso in cui una variabile sia 0 PHP 2
G Problema php relativo a funzione di un pulsante PHP 8
E php problema incremento e decremento di 2 variabili con click da pulsante PHP 0
A pulsante salva in pagina php PHP 5
L php/mysql - anteprima notizia con pulsante PHP 2
A Pulsante per compilare una form php in automatico con dati presi da un db PHP 6
G phpmailer e php 8.1 con estensione mysqli PHP 5
M Invio dati database via email php PHP 0
K [php] Problema con inner join PHP 4
K [php]form invio dati PHP 0
P Codifica caratteri speciali mysql php PHP 0
K [PHP] Problema con variabili concatenate. PHP 1
E Stampante termica escpos-php PHP 6
JeiMax Modifica codice php personalizzato PHP 2
G Come modificare un pdf in php PHP 1
U Link a doppio file PHP PHP 0
E PHP & jQuery PHP 8
N Passare array da php a javascript PHP 5
F Applicazione PHP/MySQL per prenotazioni: limitare il numero massimo di posti prenotabili PHP 20
L tipo boolean non funzionante su mariadb (mysql). E codice php 7.4. PHP 0
U PHP creare un file excel dopo ricerca nel DB PHP 0
M PHP/MySQL - Estrarre valori min e max di ogni gruppo PHP 5
F Php e fatturazione elettronica PHP 0
P lanciare script asp (o php) da jquery Javascript 1
Couting95 inserire dati da un file di testo in una tabella in php PHP 1
P Data scraping in PHP non funziona PHP 4
C Calcoli matematici in php PHP 5
F Scrivere dei dati in word con php PHP 0
D PHP leggere cartella di Windows PHP 1
I dominio aruba versione php server linux Domini 3
G Colorare menu select attraverso ricerca php PHP 0
L PHP motore di ricerca nel sito PHP 1
S PHP e Mysqli PHP 0
Y Stampare da php su un foglio A6 attraverso una stampante esterna PHP 1
M Visulizzare immagine con php PHP 8
G [PHP] Creare script di prenotazione con controllo disponibilità. PHP 7
G leggere file txt e stampare con php il contenuto a video PHP 7
F Ricreare struttura php+mysql su Xampp Apache 0
Z PHP.INI - STMP per invio email con PHP Server Dedicati e VPS 0
M Array associativi php su 2 campi mysql PHP 10
G Invio form con PHP PHP 3

Discussioni simili