AJAX ile dosya indirme işlemi, sunucudan istek yaparak dosyanın içeriğini alıp tarayıcının indirme özelliğini kullanarak gerçekleştirilebilir. Aşağıdaki adımlar bu işlemi yapmak için kullanılabilir:
- Sunucudan AJAX isteği yapmak için XMLHttpRequest nesnesi kullanılır.
- İsteğin tipi "arraybuffer" veya "blob" olarak ayarlanır.
- İsteğin başarılı bir şekilde tamamlanması durumunda, indirilecek dosyanın içeriği response özelliği aracılığıyla alınır.
- Dosya içeriğini indirmek için tarayıcının indirme özelliğini kullanmak için URL.createObjectURL() veya URL.createBlobURL() fonksiyonları kullanılabilir.
- İndirme işlemi tamamlandıktan sonra, oluşturulan URL nesnesi URL.revokeObjectURL() fonksiyonu ile geçersiz hale getirilmelidir.
Aşağıdaki örnek, AJAX ile sunucudan dosya indirme işlemini gösterir:
var xhr = new XMLHttpRequest();
xhr.open('GET', 'path/to/file', true);
xhr.responseType = 'blob';
xhr.onload = function(e) {
if (this.status == 200) {
var blob = new Blob([this.response], {type: 'application/octet-stream'});
var link = document.createElement('a');
link.href = window.URL.createObjectURL(blob);
link.download = 'file.bin';
link.click();
window.URL.revokeObjectURL(link.href);
}
};
xhr.send();