Мы делаем это так:
Сначала добавьте этот скрипт.
<script type="text/javascript">
function populateIframe(id,path)
{
var ifrm = document.getElementById(id);
ifrm.src = "download.php?path="+path;
}
</script>
Поместите это туда, где вы хотите кнопку загрузки (здесь мы используем только ссылку):
<iframe id="frame1" style="display:none"></iframe>
<a href="javascript:populateIframe('frame1','<?php echo $path; ?>')">download</a>
Файл 'download.php' (должен быть размещен на вашем сервере) просто содержит:
<?php
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=".$_GET['path']);
readfile($_GET['path']);
?>
Таким образом, когда вы нажимаете на ссылку, скрытый iframe получает / открывает исходный файл 'download.php'. С путем в качестве параметра получения.
Мы считаем, что это лучшее решение!
Следует отметить, что PHP-часть этого решения является простой демонстрацией и потенциально очень и очень небезопасной. Это позволяет пользователю загружать любой файл, а не только заранее определенный набор. Это означает, что они могут загружать части исходного кода самого сайта, возможно, содержащие учетные данные API и т. Д.