web-dev-qa-db-fra.com

Comment télécharger un fichier depuis une base de données/un dossier en utilisant php

Le fichier téléchargé sera stocké dans la base de données et le dossier (nom du dossier: uploads) .Maintenant, je veux savoir comment créer un fichier de téléchargement à partir de la base de données/du dossier. J'ai deux fichiers butangDonload.php et download.php. Lorsque l'utilisateur clique sur "Décharger", la boîte de dialogue contextuelle apparaît et enregistre le fichier.

butangDonload.php

<?php

    $file = "Bang.png"; //Let say If I put the file name Bang.png
    echo "<a href='download.php?nama=".$file."'>donload</a> ";

?>

download.php

<?php
    $name= $_GET['nama'];
    download($name);

    function download($name) {
        $file = $nama_fail;

        if (file_exists($file)) {
            header('Content-Description: File Transfer');
            header('Content-Type: application/octet-stream');
            header('Content-Disposition: attachment; filename='.basename($file));
            header('Content-Transfer-Encoding: binary');
            header('Expires: 0');
            header('Cache-Control: must-revalidate');
            header('Pragma: public');
            header('Content-Length: ' . filesize($file));
            ob_clean();
            flush();
            readfile($file);
            exit;
        }
    }
?>
5
nazerol

J'ai changé votre code avec peu de modification qui fonctionnera bien ..__ Voici le code:

butangDonload.php

<?php
$file = "logo_ldg.png"; //Let say If I put the file name Bang.png
echo "<a href='download1.php?nama=".$file."'>download</a> ";
?>

download.php

<?php
$name= $_GET['nama'];

    header('Content-Description: File Transfer');
    header('Content-Type: application/force-download');
    header("Content-Disposition: attachment; filename=\"" . basename($name) . "\";");
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($name));
    ob_clean();
    flush();
    readfile("your_file_path/".$name); //showing the path to the server where the file is to be download
    exit;
?>

Ici, vous devez afficher le chemin à partir duquel le fichier doit être téléchargé . c'est-à-dire que je vais simplement donner le nom du fichier mais qu'il faut donner le chemin du fichier pour lire ce fichier. Donc, il devrait être remplacé par J'ai testé en utilisant votre code et en modifiant également fonctionnera.

11

voici le code pour télécharger le fichier avec combien de% il est téléchargé

<?php
$ch = curl_init();
$downloadFile = fopen( 'file name here', 'w' );
curl_setopt($ch, CURLOPT_URL, "file link here");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_BUFFERSIZE, 65536);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_PROGRESSFUNCTION, 'downloadProgress'); 
curl_setopt($ch, CURLOPT_NOPROGRESS, false);
curl_setopt( $ch, CURLOPT_FILE, $downloadFile );
curl_exec($ch);
curl_close($ch);

function downloadProgress ($resource, $download_size, $downloaded_size, $upload_size, $uploaded_size) {

    if($download_size!=0){
    $percen= (($downloaded_size/$download_size)*100);
    echo $percen."<br>";

}

}
?>
3
luke

Vous pouvez utiliser le tag html5 pour télécharger l'image directement

<?php
$file = "Bang.png"; //Let say If I put the file name Bang.png
echo "<a href='download.php?nama=".$file."' download>donload</a> ";
?>

Pour plus d'informations, consultez ce lien http://www.w3schools.com/tags/att_a_download.asp

2
Dhaval Rathod
butangDonload.php

$file = "Bang.png"; //Let say If I put the file name Bang.png
$_SESSION['name']=$file;    

Essaye ça,

<?php

$name=$_SESSION['name'];
download($name);

function download($name){
$file = $nama_fail;
?>
0
bala 3057258
You can also use the following code:

<?php
$filename = $_GET["nama"];
$contenttype = "application/force-download";
header("Content-Type: " . $contenttype);
header("Content-Disposition: attachment; filename=\"" . basename($filename) . "\";");
readfile("your file uploaded path".$filename);
exit();
?>