2009-06-12 2 views
2

я скачиваю файл, используя кодСкачать файл без всплывающего окна в ASP.NET

btnDownloadTemplate.Attributes.Add("onClick", "window.open('StudyReport/WordReportTemplate.doc', 'OpenTemplate', 'resizable=no,scrollbars=no,toolbar=no,directories=no,status=no,menubar=no,copyhistory=no');return false;"); 

Это покажет всплывающее окно и диалоговое окно загрузки показывается. Как я могу избежать всплывающего окна, и только экран загрузки находится на экране?

+0

Я написал ответ и все, но у меня есть вторая мысль, я не уверен, что я понимаю ... Если вы хотите что-то, что загружает файл, когда вы нажимаете на нее, почему вы не можете использовать регулярную ссылку? – Kobi

ответ

2

У меня есть ответ. Я удаляю атрибуты и добавляю событие click и в него.

string path = Server.MapPath(""); 
    path = path + @"\StudyReport\WordReportTemplate.doc"; 
    string name = Path.GetFileName(path); 
    Response.AppendHeader("content-disposition", "attachment; filename=" + name); 
    Response.ContentType = "Application/msword"; 
    Response.WriteFile(path); 
    Response.End(); 
+1

Использование Response.TransmitFile более эффективно, чем WriteFile, поскольку оно не требует буферизации необработанных данных. –

2

Не делайте Window.Open, просто измените URL страницы, чтобы быть документом.

1

Кроме того, вы можете просто использовать window.location вместо window.open.

var file = 'StudyReport/WordReportTemplate.doc'; window.location = file;

2

Общей целью является открытие ссылки в . Это не требует JavaScript и не будет открывать всплывающие окна или пустые вкладки. может быть очень маленьким, поэтому он почти невидим.

<iframe name="DownloadDummy"> 
</iframe> 

И ссылка:

<a href="http://example.com/file.csv" target="DownloadDummy">Download File</a>