Inserire tastino "download file"

Trapano

Utente Attivo
27 Set 2012
238
0
16
45
Ciao a tutti.
Ho il seguente script..
PHP:
<?php 
// Definisco il path della cartella 
$path = "."; 

// Apro la cartella 
$dir_handle = @opendir($path) or die("Non è possibile aprire $path"); 

// Lettura e ciclo dei files 
while ($file = readdir($dir_handle)) { 

if($file == "." ||
 $file == ".."||
 $file == "questa_pagina.htm") 

continue; 
echo "<a href=\"$file\">   $file    </a>    <br/>"; 
} 
// Chiudo la cartella 
closedir($dir_handle); 
?>
Che mi elenca gli mp3 in una cartella.
Quando ci clicco, mi si apre il lettore e ascolto la musica...
Ma se volessi fare il download del file nel mio pc, cosa dovrei modificare?
Grazie.
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
Aggiorna il tuo codice di lettura
PHP:
foreach(glob('*.mp3') as $file)
{
  echo "<a href=\"$file\">   $file    </a>    <br/>"; 
  echo "<a href=\"download.php?file=$file\">   $file    </a>    <br/>";  
}

Poi crea la pagina per il download
PHP:
<?php
if(!empty($_GET['file']))
{
    $file = '/path/etc/'.$_GET['file'];
    if(file_exists($file) && pathinfo($file, PATHINFO_EXTENSION)=='mp3')
    {
        header("Content-type: audio/mpeg");
        header("Content-disposition: attachment; filename=".basename($file));
        readfile($file);
    }
}
 

Trapano

Utente Attivo
27 Set 2012
238
0
16
45
Grazie Nefyt per l'aiuto...
Ho modificato così le due pagina...
"download.php" che richiamo...
PHP:
<?php  
// Definisco il path della cartella  
$path = "."; 

// Apro la cartella  
$dir_handle = @opendir($path) or die("Non è possibile aprire $path");  


foreach(glob('*.mp3') as $file)
{
  echo "<a href=\"$file\">   $file    </a>    <br/>"; 
  echo "<a href=\"scarica.php?file=$file\"> Scarica    </a>    <br/>";  
}
     
// Chiudo la cartella  
closedir($dir_handle);  
?>
e "scarica.php" che dovrebbe scaricare il file..
PHP:
<?php
if(!empty($_GET['file']))
{
    $file = '/path/etc/'.$_GET['file'];
    if(file_exists($file) && pathinfo($file, PATHINFO_EXTENSION)=='.mp3')
    {
        header("Content-type: audio/mpeg");
        header("Content-disposition: attachment; filename=".basename($file));
        readfile($file);
    }
}
?>

Però, il tastino "Scarica" mi da pagina bianca...
Sarà il mio server locale ?
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
Grazie Nefyt per l'aiuto...
Ho modificato così le due pagina...
"download.php" che richiamo...
PHP:
<?php  
// Definisco il path della cartella  
$path = "."; 

// Apro la cartella  
$dir_handle = @opendir($path) or die("Non è possibile aprire $path");  


foreach(glob('*.mp3') as $file)
{
  echo "<a href=\"$file\">   $file    </a>    <br/>"; 
  echo "<a href=\"scarica.php?file=$file\"> Scarica    </a>    <br/>";  
}
     
// Chiudo la cartella  
closedir($dir_handle);  
?>
e "scarica.php" che dovrebbe scaricare il file..
PHP:
<?php
if(!empty($_GET['file']))
{
    $file = '/path/etc/'.$_GET['file'];
    if(file_exists($file) && pathinfo($file, PATHINFO_EXTENSION)=='.mp3')
    {
        header("Content-type: audio/mpeg");
        header("Content-disposition: attachment; filename=".basename($file));
        readfile($file);
    }
}
?>

Però, il tastino "Scarica" mi da pagina bianca...
Sarà il mio server locale ?
Hai modificato la directory di download con la tua?(/path/etc/) Inoltre togli opendir e closedir non servono
 

Trapano

Utente Attivo
27 Set 2012
238
0
16
45
No. Non è il mio server locale. Ho provato anche su un server esterno e risulta pagina bianca.
 

Trapano

Utente Attivo
27 Set 2012
238
0
16
45
Ma che directory devo mettere?
PHP:
<?php 
if(!empty($_GET['file'])) 
{ 
    $file = 'http://.../../....php'.$_GET['file']; 
    if(file_exists($file) && pathinfo($file, PATHINFO_EXTENSION)=='.mp3') 
    { 
        header("Content-type: audio/mpeg"); 
        header("Content-disposition: attachment; filename=".basename($file)); 
        readfile($file); 
    } 
} 
?>
Tutto l'indirizzo completo di dove si trova la cartella che contiene le pagine?
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
Ma che directory devo mettere?
PHP:
<?php 
if(!empty($_GET['file'])) 
{ 
    $file = 'http://.../../....php'.$_GET['file']; 
    if(file_exists($file) && pathinfo($file, PATHINFO_EXTENSION)=='.mp3') 
    { 
        header("Content-type: audio/mpeg"); 
        header("Content-disposition: attachment; filename=".basename($file)); 
        readfile($file); 
    } 
} 
?>
Tutto l'indirizzo completo di dove si trova la cartella che contiene le pagine?
La tua directory di download, dove tieni i file mp3 in locale sul server

Prova inoltre aggiungendo basename
PHP:
$file = '/mp3s/'.basename($_GET['file']);
 

Trapano

Utente Attivo
27 Set 2012
238
0
16
45
Negativo.
Ora sono esattamente così:
download.php
PHP:
<?php   
$path = "."; 
foreach(glob('*.mp3') as $file)
{
  echo "<a href=\"$file\">   $file    </a>    <br/>"; 
  echo "<a href=\"scarica.php?file=$file\"> Scarica    </a>    <br/>";  
} 
?>
e scarica.php
PHP:
<?php
if(!empty($_GET['file']))
{
    $file = '/archivio/musica'.basename ($_GET['file']);
    if(file_exists($file) && pathinfo($file, PATHINFO_EXTENSION)=='.mp3')
    {
        header("Content-type: audio/mpeg");
        header("Content-disposition: attachment; filename=".basename($file));
        readfile($file);
    }
}
?>
la directory è corretta, ho copiato l'indirizzo di un file e ho confrontato...
Ancora pagina bianca.
Scusa se ti faccio perdere tempo...
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
Negativo.
Ora sono esattamente così:
download.php
PHP:
<?php   
$path = "."; 
foreach(glob('*.mp3') as $file)
{
  echo "<a href=\"$file\">   $file    </a>    <br/>"; 
  echo "<a href=\"scarica.php?file=$file\"> Scarica    </a>    <br/>";  
} 
?>
e scarica.php
PHP:
<?php
if(!empty($_GET['file']))
{
    $file = '/archivio/musica'.basename ($_GET['file']);
    if(file_exists($file) && pathinfo($file, PATHINFO_EXTENSION)=='.mp3')
    {
        header("Content-type: audio/mpeg");
        header("Content-disposition: attachment; filename=".basename($file));
        readfile($file);
    }
}
?>
la directory è corretta, ho copiato l'indirizzo di un file e ho confrontato...
Ancora pagina bianca.
Scusa se ti faccio perdere tempo...
Puoi incollarmi l'indirizzo del file che viene mandato via url?
Ti sei dimenticato uno slash '/archivio/musica/'
 

Trapano

Utente Attivo
27 Set 2012
238
0
16
45
PHP:
http://XXX.XXX.XX.XX/archivio/musica/scarica.php?file=Afro%20Dylan%20-%20Elegibo.mp3

PHP:
http://XXX.XXX.XX.XX/archivio/musica/Afro%20Dylan%20-%20Elegibo.mp3
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
Allora dovrebbe bastarti, se i file mp3 sono nella stessa directory
PHP:
$file = '/archivio/musica/'.$_GET['file'];
 

Trapano

Utente Attivo
27 Set 2012
238
0
16
45
Nemmeno così... Ho provato anche a cambiare browser... sto usando Safari... chrome... niente!
Se ti sei stufato, lascia perdere, grazie per il tempo che mi hai dedicato... se riesco a risolvere, posto la soluzione...
al momento sono così:
pagina "download.php"
PHP:
<?php    
$path = "."; 
foreach(glob('*.mp3') as $file)
{
  echo "<a href=\"$file\" target=\"_blank\">   $file    </a>    <br/>"; 
  echo "<a href=\"scarica.php?file=$file\" > Scarica    </a>    <br/>";  
}
?>
e pagina scarica.php
PHP:
<?php
if(!empty($_GET['file']))
{
    $file = '/archivio/musica/'.$_GET['file']; 
    if(file_exists($file) && pathinfo($file, PATHINFO_EXTENSION)=='mp3')
    {
        header("Content-type: audio/mpeg");
        header("Content-disposition: attachment; filename=".basename($file));
        readfile($file);
    }
}
?>
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
Forse ho capito vuole solo il file locale perché sono nella stessa directory
PHP:
if(!empty($_GET['file'])) 
{ 
    $file = $_GET['file'];  
    if(file_exists($file) && pathinfo($file, PATHINFO_EXTENSION)=='mp3') 
    { 
        header("Content-type: audio/mpeg"); 
        header("Content-disposition: attachment; filename=".$file); 
        readfile($file); 
    } 
}
 

Trapano

Utente Attivo
27 Set 2012
238
0
16
45
:beer::beer::beer::beer::beer::beer::beer::beer::beer::beer::beer::beer::beer::beer::beer::mavieni::mavieni::mavieni::elvis::elvis::elvis::elvis:


Grazieeeeee!!!

pagina "download.php"
PHP:
<?php    
$path = "."; 
foreach(glob('*.mp3') as $file)
{
  echo "<a href=\"$file\" target=\"_blank\">   $file    </a>    <br/>"; 
  echo "<a href=\"scarica.php?file=$file\" > Scarica    </a>    <br/>";  
}
?>

che richiama pagina "scarica.php"
PHP:
<?php
if(!empty($_GET['file']))
{
     $file = $_GET['file']; 
    if(file_exists($file) && pathinfo($file, PATHINFO_EXTENSION)=='mp3')
    {
        header("Content-type: audio/mpeg");
        header("Content-disposition: attachment; filename=".basename($file));
        readfile($file);
    }
}
?>

e funziona.
 

Trapano

Utente Attivo
27 Set 2012
238
0
16
45
pagina "download.php"
PHP:
<?php    
$path = "."; 
foreach(glob('*.mp3') as $file)
{
  echo "<a href=\"$file\" target=\"_blank\">   $file    </a>    <br/>"; 
  echo "<a href=\"scarica.php?file=$file\" > Scarica    </a>    <br/>";  
}
?>

che richiama pagina "scarica.php"
PHP:
<?php
if(!empty($_GET['file']))
{
     $file = $_GET['file']; 
    if(file_exists($file) && pathinfo($file, PATHINFO_EXTENSION)=='mp3')
    {
        header("Content-type: audio/mpeg");
        header("Content-disposition: attachment; filename=".basename($file));
        readfile($file);
    }
}
?>

e funziona.[/QUOTE]

Adesso Nefyt mi manderà a quel paese, ma sono a casa e mi annoio, così vado a pensarle e provarle tutte...
Questo script funziona per quanto riguarda gli mp3. Ma avrei anche una cartella che contiene .avi, .mov, e m4v...
Dovrei cambiare le estensioni, ma siccome è più di un file come faccio? :angel:
 

Trapano

Utente Attivo
27 Set 2012
238
0
16
45
download.php
PHP:
<?php    
$path = "."; 
foreach(glob('*.*') as $file)
{
  echo "<a href=\"$file\" target=\"_blank\">   $file    </a>    ------"; 
  echo "<a href=\"scarica.php?file=$file\" > Scarica    </a>    <br/>";  
}
?>
e scarica.php
PHP:
<?php
if(!empty($_GET['file']))
{
     $file = $_GET['file']; 
    if(file_exists($file) && pathinfo($file, PATHINFO_EXTENSION)=='*')
    {
        header("Content-type: video/x-msvideo");
        header("Content-disposition: attachment; filename=".basename($file));
        readfile($file);
    }
}
?>
Così non va...:hammer::hammer:
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
PHP:
if(!empty($_GET['file'])) 
{ 
     $estensioni = array('mp3'=>'audio/mpeg','avi' =>'video/avi','mov'=>'video/quicktime','m4v'=>'video/mp4');
     $file = $_GET['file'];  
     $ext = pathinfo($file, PATHINFO_EXTENSION);
    if(file_exists($file) && in_array($ext, array_keys($estensioni))) 
    { 
        header("Content-type: {$estensioni[$ext]}"); 
        header("Content-disposition: attachment; filename=$file"); 
        readfile($file); 
    } 
}
Mettili tutti nella stessa directory oppure cambia e aggiungi quelli che vuoi
 
Discussioni simili
Autore Titolo Forum Risposte Data
L PHPSpreadsheet inserire dati da file .xlsx/.xls su database PHP 2
P inserire due voci in un titolo post wp WordPress 1
R inserire video nel sito HTML e CSS 15
J Inserire blog wordpress in angular CMS (Content Management System) 0
A inserire variabile php colore in div html PHP 2
L inserire dati multi livello PHP 8
G Inserire una scritta Java 1
M Inserire variabile nella value di una hidden PHP 3
S Inserire foto in ogni cella di una tabella Javascript 0
G inserire dati automaticamente in mysql PHP 0
B Vorrei inserire una finestra con messaggio ad un history.back PHP 16
Shyson Inserire placeholder nel campo cerca PHP 5
M Lanciare alert se il codice fiscale è già presente nel db e lasciare la scelta di inserire all'utente PHP 42
atipika INSERIRE ICONE DOWNLOAD E STAMPA WORDPRESS WordPress 10
F Creare un set di date a seconda del frazionamento scelto da inserire in MySQL PHP 6
B inserire valori da una tabella a un altra mysql PHP 34
D [Javascript] inserire uno script in un file php Javascript 6
napuleone [HTML] type="file" inserire path di partenza HTML e CSS 4
Monital [Javascript] inserire dati estratti dal db in html fisso Javascript 1
R [WordPress] Inserire campi aggiuntivi ad un Submit Form già dato dal template (front-end) WordPress 0
M inserire i dati ottenuti da una jquery in una tabella già esistente jQuery 1
G Inserire "Leggi il resto dell'articolo" con link al post sul sito preso via RSS Email Marketing 0
M [PHP] Come inserire codice html in un ciclo while PHP 2
P [PHP] Inserire stringhe in input(text),memorizzarle e stamparle in file successivo PHP 0
J [Javascript] Inserire un caricamento con animazione prima dell'esecuzione di un'azione Javascript 1
Shyson [PHP] Inserire testo nel codice PHP 2
D Mailchimp - Possibile inserire doppia condizione per i triggers? Email Marketing 0
A [MS Access] Pulsante per inserire allegati in campo maschera MS Access 0
Shyson [HTML] Inserire nuovo font con @font-face HTML e CSS 5
Alex_70 Inserire photo in php PHP 0
D [Javascript] [HTML] Inserire slash dopo 3 numeri Javascript 5
F INSERIRE IN UN'UNICA CASELLA DI TESTO REPORT ACCESS I VALORI DELLA TABELLA DI UN'INTERA COLONNA MS Access 2
A [HTML] Come inserire google review stars nelle pagine del mio sito HTML e CSS 0
spider81man Connettersi ad un DB ed inserire dati con Javascript Javascript 3
spider81man [PHP] Inserire file .pdf in db PHP 6
P [WordPress] Inserire codice in pagina dinamica WordPress 0
A [PHP] Ciclare array multidimensionale e inserire valori in DB PHP 2
M [PHP] Inserire array nel db PHP 6
andreas88 [HTML] come inserire 3 riquadri in un unico rigo (vedere img allegata) HTML e CSS 11
G [PHP] inserire risultato di una query in una tabella PHP 3
P [Javascript] Inserire una nuova condizione in una funzione Javascript 3
G [Guida MyBB 1.8] Inserire icone accanto alle sezioni CMS (Content Management System) 0
M [wordpress-galleria immagini]Inserire classe php in html PHP 0
C Inserire dati tabella leggendo parte di altra tabella con php PHP 13
crealatualista [PHP] Inserire nomi nel database PHP 1
B [WordPress] inserire pulsante like per ogni post WordPress 2
L [PHP] Inserire google recaptcha in uno form contatti PHP 1
A Inserire un link con illlustrator Webdesign e Grafica 0
T4MAR4 [PHP] Inserire piu campi di ricerca PHP 2
D Come inserire opzioni menù prelevandole dal database con PHP ? PHP 12

Discussioni simili