AJAX ile Dosya İndirme İşlemi Nasıl Yapılır?
Merhaba PT.
Butona tıklayınca dosya indirtmeye çalışıyorum. AJAX isteği attığım PHP sayfasına normal olarak girince indirme başlıyor. Ancak AJAX ile istek atınca başlatamadım bir türlü.
Dönen cevapta bir sürü kod oluşuyor. Mantık oluşturamadım bir türlü. :)
<a href="#" data-id="1" class="download">
İNDİRME BAĞLANTISI
</a>
// AJAX işlemleri.
$(document).on("click", 'a.download', function(event) {
event.preventDefault();
var contents = {
'id' : $(this).data("id")
};
$.post('downloader.php', contents, function(response){
if (response.toastr) {
if (response.toastr == "warning") {
toastr.warning(response.message);
}else if (response.toastr == "error") {
toastr.error(response.message);
}else if (response.toastr == "info") {
toastr.info(response.message);
}else {
toastr.success(response.message);
}
}
}, 'json');
});
// - downloader.php - Dosya işlemleri.
// Gelen ID ile ilgili kontrolleri yaptıktan sonra;
$file = "../../prototurk.pdf";
$fileName = "dosya-prototurk";
header('Content-Type: application/pdf');
header('Content-Disposition: attachment; filename="' . $fileName . '.pdf"');
readfile($file);
// İndirme başlatıldı mesajı.
$result["toastr"] = "success";
$result["message"] = "İndirme işlemi başladı.";
echo json_encode($result);
Dosyayı bu şekilde indirmeye çalışma sebebim, dosyanın kaynak bağlantısını gizlemek ve bazı kontrollerden geçirip indirmesini istediğim kullanıcının indirebilmesini sağlamak.