直接下载文件,而不是从window.open(url)

时间:2015-04-09 18:48:00

标签: javascript c# asp.net winforms

我目前在ASP.NET应用程序中遇到了一些会话问题。主应用程序打开一个ASP.NET对话框,其中包含指向PDF文件的链接。此文件已下载'使用window.open('myurl/file.pdf');

这导致新窗口打开,但由于会话对象未传输而无法下载文件(请记住解决方案有点复杂,因此尝试将会话保持在新窗口中将无法正常工作因为它嵌入在C#WebBrowser框架中。)

是否有可能直接从链接下载文件,而不是通过window.open()?

2 个答案:

答案 0 :(得分:1)

如果文件系统上存在该文件,您只需链接即可。我知道这有时会在浏览器中打开文件,具体取决于用户的设置。

如果您不想通过打开窗口来执行此操作,则会动态生成文件:

  1. 使用ButtonLinkButton
  2. 在Button / LinkBut​​ton的Click事件中使用Response.AddHeader

        Response.AddHeader("content-disposition", "attachment;filename={filename.extension}")
    Response.ContentType = "application/{MIME type here}"
    
    1. 将结果流式传输到客户端(您需要查看此内容,我通过流式传输DataGrids而不是使用PDF来处理Excel,而不是使用PDF)
  3. 这应该提示用户做什么......

答案 1 :(得分:0)

这通过简单地调用window.dialogArguments.MyFunction(url)来解决,它调用父窗口MyFunction(url)。在那个窗口中,我使用了window.external.MyFunctionToDotNet(url),它再次从WebClient中获取了我的WebBrowser中的cookie并下载了该文件。