Php ile dosya indirmek (Güncellendi)

Örnek Uygulama | Örnek Uygulamayı İndir

Bir resim indireceğiniz zaman ne yaparsınız? Resme sağ tıkla farklı kaydet. Peki bunu ziyaretçi için kolaylaştırmaya ne dersiniz?

Sadece resim değil her türden içeriği bir tıklama ile kullanıcının bilgisayarına indirebiliriz. Bunun için şu küçük uygulamayı inceleyebilirsiniz.

Kodlara gelince

[php]

<html>
<head>
<title>PHP ile dosya indirmek</title>
</head>
<body>
<h1>PHP ile dosya indirmek</h1>
<h2>Önce 1 numaraya tıklayıp resmi indirmeye çalışın,sonra 2 numaraya tıklayıp indirin!</h2>
<?
$resim['tur']=base64_encode("image/jpeg");
$resim['yol']=base64_encode("resim.jpg");

?>
1- <a href="resim.jpg">Resmi İndir</a> <br />
2- <a href="indir.php?indir=<?=$resim['yol']."&tur=".$resim['tur']?>">Resmi İndir</a> <br /><br />

</body>
</html>

[/php]

Bir dizi oluşturduk ve dizinin “tur” anahtarına dosya türünü ve “yol” anahtarına indirme yolunu base64 ile şifreleyerek ekledik. Şifrelememizin sebebi güvenlik.  Sonra dosya indirme işlemini yapacak indir.php sayfasına get yöntemiyle indir=yol,tur=tur diyerek yönlendirdik.

indir.php dosyası’nın kodları ise şöyle

[php]

<?  header("content-type:".base64_decode($_GET['tur'])."");
header("content-disposition: attachment; filename=".base64_decode($_GET['indir']));
readfile(base64_decode($_GET['indir']));
?>

[/php]

1. Satır: indir.php dosyası kendi türünü get ile gelen tur verisini base64 şifrelemesini çözerek açıcağı dosya türü olarak gösteriyor.

2.Satır:  content-disposition: attachment; değeri ile dosya kendisini bir ek olarak gösteriyor ve adını da get ile gelen indir değerini base64 şifresini çözerek gösteriyor. Bu satır dosyanın tarayıcı tarafından derlenmek yerine indirilmesi gerektiğini söylüyor.

3.satır: Dosya kendisini tarayıcıya okutuyor.

Bu kadar. Oldukça basit bir işlem ve çok faydalı olabiliyor.

Sitelerimizi ziyaret eden kullanıcıya ziyareti ne kadar kolaylaştırırsak ziyaretçi o kadar memnun olacaktır.

Dosya tipi bilgilerini nerden bulacağız derseniz; buradan buyrun. Ayrıca Örnek Uygulama dosyasında bu bilgiler mevcut.  Teşekkürler @lous.

Örnek Uygulama | Örnek Uygulamayı İndir

yedincisenol

Diğer yazıları: serpito.com/author/senol 23 Yaşında bir web geliştirici ve kindir.net kurucusu. Php,mysql,html,css,javascript,jquery ile harika işler çıkarmanın peşinde. Facebook, Friendfeed , Twitter'da takip edebilirsiniz. blog.yedincisenol.com kişisel blogu ;)

Website - More Posts

13 Comments

  • 09 Nisan 2010 - 12:43 | Permalink

    Çok güzel bi uygulama olmuş şenol, ellerine sağlık.

  • 09 Nisan 2010 - 12:57 | Permalink

    Teşekkürler. :)

  • Yunus
    12 Mayıs 2010 - 00:41 | Permalink

    Sağolasın, gerçekten aklımdan geçiyordu böyle bir konunun araştırmasını yapmak, sen yazmışsın, iyi olmuş :)

  • 02 Haziran 2010 - 13:39 | Permalink

    Teşekkürler.

  • 30 Temmuz 2010 - 13:46 | Permalink

    Tam aradığım şeydi. winrar dosyaları için dosya türüne rar yazarsanız oluyor. Ben denedim ordan biliyorum.

  • 30 Temmuz 2010 - 16:13 | Permalink

    Teşekkür ederim çalışman benim için yararlı oldu…
    Diğer MIME tipleri
    kaynak:http://tr.php.net/manual/en/function.mime-content-type.php

    $mime_types = array(

    ‘txt’ => ‘text/plain’,
    ‘htm’ => ‘text/html’,
    ‘html’ => ‘text/html’,
    ‘php’ => ‘text/html’,
    ‘css’ => ‘text/css’,
    ‘js’ => ‘application/javascript’,
    ‘json’ => ‘application/json’,
    ‘xml’ => ‘application/xml’,
    ‘swf’ => ‘application/x-shockwave-flash’,
    ‘flv’ => ‘video/x-flv’,

    // images
    ‘png’ => ‘image/png’,
    ‘jpe’ => ‘image/jpeg’,
    ‘jpeg’ => ‘image/jpeg’,
    ‘jpg’ => ‘image/jpeg’,
    ‘gif’ => ‘image/gif’,
    ‘bmp’ => ‘image/bmp’,
    ‘ico’ => ‘image/vnd.microsoft.icon’,
    ‘tiff’ => ‘image/tiff’,
    ‘tif’ => ‘image/tiff’,
    ‘svg’ => ‘image/svg+xml’,
    ‘svgz’ => ‘image/svg+xml’,

    // archives
    ‘zip’ => ‘application/zip’,
    ‘rar’ => ‘application/x-rar-compressed’,
    ‘exe’ => ‘application/x-msdownload’,
    ‘msi’ => ‘application/x-msdownload’,
    ‘cab’ => ‘application/vnd.ms-cab-compressed’,

    // audio/video
    ‘mp3′ => ‘audio/mpeg’,
    ‘qt’ => ‘video/quicktime’,
    ‘mov’ => ‘video/quicktime’,

    // adobe
    ‘pdf’ => ‘application/pdf’,
    ‘psd’ => ‘image/vnd.adobe.photoshop’,
    ‘ai’ => ‘application/postscript’,
    ‘eps’ => ‘application/postscript’,
    ‘ps’ => ‘application/postscript’,

    // ms office
    ‘doc’ => ‘application/msword’,
    ‘rtf’ => ‘application/rtf’,
    ‘xls’ => ‘application/vnd.ms-excel’,
    ‘ppt’ => ‘application/vnd.ms-powerpoint’,

    // open office
    ‘odt’ => ‘application/vnd.oasis.opendocument.text’,
    ‘ods’ => ‘application/vnd.oasis.opendocument.spreadsheet’,
    );

  • 30 Temmuz 2010 - 22:54 | Permalink

    Teşekkürler. Yazıya ekliyorum yorumunu. :)

  • murat
    20 Kasım 2010 - 00:38 | Permalink

    hocam çok güzek yanlız bende şöyle bir sorun var indirme yaparken dosyanın ismini değişebilirmiyiz ? diyelim asdfsfşlsdşlflsşdf.mp3 adlı bi parça olduğunda bunu indirmek istediğinde yeniden adlandırıcak işde murat.mp3 olucak şimdiden teşekkürler.

  • MURAT
    24 Kasım 2010 - 15:20 | Permalink

    slm arkadaşlar bende bunun gibi bir script arıyordum bir kaç ek özellik eklense dahada güzel olur diyorum mesele 1 : resim rar zip swf bu dosyaları upload edebilecek
    2: edilen bu dosyaların resimse resmin 100 e 100 boyutlarında gösterimin olacak swf rar gibi görüntüsü olmayanın icon u olacak.
    3. alt klasör oluşturabilinecek bir script olsa tadından yenmez çünkü böyle bir script webte yok… çok araştırdım…

  • 30 Kasım 2010 - 18:25 | Permalink

    @murat ve @MURAT; bahsettiğiniz özellikler bu kodların amacının dışında kalıyor. Burada amaç, tıklandığında kendini tarayıcıda çalıştıran veya görüntüleyen dosya türlerinin ayrıca işleme gerek kalmadan indirilmesini sağlamak. Onun için bahsettiğiniz özellikleri bu kodların arasına eklemeye çalışmak pek mantıklı bi’iş değil.

  • 08 Aralık 2010 - 08:36 | Permalink

    teşekkür ederim. verdiğiniz kodu sitemde kullandım ancak iki sorun var:
    1. inen dosyanın boyutunu vermediği için downloadın ne kadar süreceği tahmin edilemiyor.
    2. dosyanın adını url+path+dosya_adı şekline dönüştürüyor. örneğin: http___depo.benimsitem.com_klasor_dosyaadi.rar

  • 15 Aralık 2010 - 14:55 | Permalink

    @yusuf geri bildirimin için teşekkür ederim. Müsait bir zamanda bu sorunları giderip yeni halini burada paylaşacağım inşallah. :)

  • eyitim
    14 Nisan 2011 - 14:35 | Permalink

    Çok güzel bir şekilde çalıştı. Eline sağlık. O kadar sitede araştırdım doğru düzgün çalışmadı hiç birisi. Teşekkürler…

  • Bir Cevap Yazın

    E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

    *

    Şu HTML etiketlerini ve özelliklerini kullanabilirsiniz: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>