Dosya ismini vermeden download adresi oluşturmak

Download sistemleriyle ilgilenenler için faydalı olacağını düşündüğüm bir uygulama.

http://site.com/download.php?id=4 dedik, dosya inmeye başladı ama, kaynağına baktığımızda dosyanın nerede olduğu ve dosya ismi yazıyor. Belki de biz bunu göstermek istemiyoruz. :) Basit uygulamalarda download.php sayfasında şu kod kullanılıyor;

<meta http-equiv="refresh" content="1;URL=".$filename[name]."" />

Ama biz bunu yapmayacağız. Çünkü dosya ismini linkte göstermek istemiyoruz.

Fazla gevezelik etmeden uygulamaya geçeyim…

<?php
$connect = mysql_connect("hostname", "username", "password");
mysql_select_db("database");

//Veritabanına bağlandık. Sıra geldi verilerimizi çekmeye.
//Benim `file` tablomda `id` ve `filename` sütunları var diyelim.
//`filename` sütununda dosyanın ismini tutuyoruz. (file.zip gibi)

$query = mysql_query("SELECT * FROM `file` WHERE `id` = '".$_GET['id']."'");
$show = mysql_fetch_array($query);

// files klasöründe dosyaları tutuyorum ben.
//Siz eğer başka bir klasörde tutuyorsanız değiştirebilirsiniz tabii ki.
header("Content-Type: application/x-msdownload");
header("Content-Disposition: attachment; filename=files/".$show[link]."");
?>

İşte bu kadar. Bu kodları download.php olarak kaydedin. download.php?id=1 dediğinizde 1 numaralı verinin dosya ismini alır, files klasöründen bulur ve kullanıcının indirmesine izin verir. Dosyanızın ismi hiçbir şekilde görünmez. Geliştirmek ve güzelleştirmek size kalmış arkadaşlar. Kolay gelsin.

Kaynak: http://www.ilhankaraoglu.com/dosya-ismini-vermeden-download-sayfasi-olusturmak