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

Download file directly, not from window.open(url)

本文关键字:window open url 下载 文件      更新时间:2023-09-26

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

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

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

如果文件系统中存在该文件,您可以直接链接到它。我知道,根据用户的设置,有时会在浏览器中打开该文件。

如果你不想通过打开一个窗口来做到这一点,并且文件是动态生成的:

  1. 使用ButtonLinkButton
  2. 在按钮/LinkButton 的点击事件中使用Response.AddHeader

        Response.AddHeader("content-disposition", "attachment;filename={filename.extension}")
    Response.ContentType = "application/{MIME type here}"
    
    1. 将结果流式传输到客户端(你需要查找这个,我经常使用Excel通过流式传输DataGrids来完成,但不太使用PDF)

这应该提示用户该做什么…

只需调用window.dialogArguments.MyFunction(url),即可解决此问题,该函数调用父窗口MyFunction(url)。在那个窗口中,我使用了window.external.MyFunctionToDotNet(url),它再次从WebClient中的WebBrowser中获取cookie并下载了该文件。