Я бы сказал, что Лучшая практика - это использование формы с вашими кнопками.Например:
<form method="get" action="/file-to-download.zip">
<div>
<input type="submit" value="Download" />
</div>
</form>
Если вам действительно нужно, чтобы он был нацелен на IFRAME (который, как объясняется, кажется ненужным), и вы всегда можете установить заголовок ответа Content-Disposition для распознанных типов), вы можете поместить target="myIFrame"
в тег формы (myIFrame - это имя вашего скрытого IFRAME).
Фактически, заголовок ответа Content-Disposition является BestПопробуйте убедиться, что файл загружен, а не открыт.