Скачать файл без всплывающего окна в 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;" );

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


person Sauron    schedule 12.06.2009    source источник
comment
Я написал ответ и все такое, но у меня есть сомнения, я не уверен, что понял ... Если вам нужно что-то, что загружает файл при нажатии на него, почему бы вам не использовать обычную ссылку?   -  person Kobi    schedule 18.08.2009


Ответы (5)


Я получил ответ. Я удаляю атрибуты и добавляю событие клика и в него.

    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(); 
person Sauron    schedule 17.06.2009
comment
Использование Response.TransmitFile более эффективно, чем WriteFile, поскольку не требует буферизации необработанных данных. - person Josh Stodola; 25.06.2009

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

person cjk    schedule 12.06.2009

Обычный прием — открыть ссылку в файле <iframe>. Это не требует JavaScript и не будет открывать всплывающие окна или пустые вкладки. <iframe> может быть очень маленьким, поэтому почти незаметным.

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

И ссылка:

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

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

var file = 'StudyReport/WordReportTemplate.doc'; окно.местоположение = файл;

person San    schedule 18.08.2009

Вы смотрели HttpResponse.WriteFile? метод?

person Babak Naffas    schedule 12.06.2009