Ö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.




13 Comments
Çok güzel bi uygulama olmuş şenol, ellerine sağlık.
Teşekkürler.
Sağolasın, gerçekten aklımdan geçiyordu böyle bir konunun araştırmasını yapmak, sen yazmışsın, iyi olmuş
Teşekkürler.
Tam aradığım şeydi. winrar dosyaları için dosya türüne rar yazarsanız oluyor. Ben denedim ordan biliyorum.
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’,
);
Teşekkürler. Yazıya ekliyorum yorumunu.
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.
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…
@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.
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
@yusuf geri bildirimin için teşekkür ederim. Müsait bir zamanda bu sorunları giderip yeni halini burada paylaşacağım inşallah.
Ç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…