在新的浏览器窗口/选项卡中打开上传的PDF文件

本文关键字:PDF 文件 浏览器 窗口 选项 | 更新日期: 2023-09-27 18:24:12

在我当前的项目中,我需要打开一个用户上传的PDF文件。我在aspx页面上有一个文件上传控件和一个上传按钮。用户单击"上载"按钮后,文件应立即保存并在新窗口中打开。

我尝试使用客户端功能:

        <script type="text/javascript">
           function openPDF() {
           alert('The file is open.');
           window.open('Open PDF.aspx','PDF');
           return true;
          }
       </script>

但是"打开PDF.aspx"页面是空白的。

打开PDF.aspx.cs文件如下:

        protected void Page_Load(object sender, EventArgs e)
        {
             string fullFileName = Session["fullFileName"].ToString();
             WebClient client = new WebClient();
             Byte[] buffer = client.DownloadData(fullFileName);
             if (buffer != null)
             {
                  Response.ContentType = "application/pdf";
                  Response.AddHeader("content-length", buffer.Length.ToString());
                  Response.BinaryWrite(buffer);
             }
       }

完整的文件路径和文件名在BtnUpload_Click事件中构建,BtnUpad_Click是一个服务器端事件,在客户端函数之后执行。如何将完整的文件路径作为会话或查询字符串传递到"OpenPDF.aspx"页面?

如果还有其他方法可以实现这一点,那么请加入你的想法。谢谢

在新的浏览器窗口/选项卡中打开上传的PDF文件

您可以执行以下操作:

  • 通过ajax post调用将上传的文件保存在服务器上的某个位置
  • ajax调用完成后,它可能会返回显示刚刚上传的文件的url
  • 然后使用window.open(url)(例如pdf.aspx?id=[some_id_or_name])

在您的pdf.aspx中,您应该在本地加载文件,并通常使用适当的头将其传输到客户端。

evet如果您在"OpenPDF.aspx"上传递文件名,它将不起作用,因为您的上传操作将在"打开PDF.aspx"打开后执行。

您可以在BtnUpload_Click级别上将文件保存到服务器,然后注册客户端脚本以打开保存的文件。