Anladığım kadarıyla bir dosyayı sadece bir kere indirmeye izin veren harici bir servis arıyorsunuz. Bildiğim böyle bir servis yok. PHP ile de yapılabilir fakat çok basit bir şey değil. Dosyayı kendiniz manuel olarak okutup PHP ile yollayıp sonradan gönderildi diye kaydetmeniz ve onu kontrol etmeniz gerekiyor.
Şöyle bir mantıkla yapılabilir. Kendi PHP hostunuzdaki dosyaya doğrudan link vermeden gerekli kontrolleri yaptıktan sonra PHP ile dosyayı gönderebilirsiniz. Doğrudan link vermemek önemli yoksa yine indirme sayısına limit koyamazsınız.
Şuradaki mantığı inceleyebilirsiniz:
This is question about downloading files from server using php script. When user clicks on download link, it processed to download.php file, and using header it started downloading. After downloa...
stackoverflow.com
Header'lar ile PHP ile HTML sayfası değil dosya oluşturduğumuzu belirtiyoruz
Ob_clean ve flush ile gönderme işlemine başlıyoruz
Filesize'a göre gönderilecek dosya parça boyutlarını belirliyoruz. Dosya yine kullanıcıya tek parça gidecek fakat RAM'e yük binmemesi için chunk mantığı ile parça parça yolluyoruz.
fopen ile dosyayı açıp fread ile parça parça okuyup ob_flush, flush komutları ile parça parça gönderiyoruz.
Tüm işlemler bitince de record_download gibi bir fonksiyon ile dosyayı indirildi olarak işaretliyoruz.
Tabii php scriptinin başında da eğer dosya işaretli ise kullanıcıya göndermeme kontrolü de ekleyebiliriz.
Bu işaretleme, kontrol mekanizması için veritabanında bir alan kullanabilir. Lisans anahtarı gibi bir şey ekleyebilirsiniz. Gönderme işlemi tamamlanınca da veritabanında kullanıldı diye işaretlersiniz.
Böylece dosyanın birden kez indirilmesini engelleyebilirsiniz. Tabii yine de indirilen dosyanın sonra tekrardan dağıtımını engelleyemezsiniz. O bambaşka bir konu çok da mümkün değil.