在新的浏览器窗口/选项卡中打开上传的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"页面?
如果还有其他方法可以实现这一点,那么请加入你的想法。谢谢
您可以执行以下操作:
- 通过ajax post调用将上传的文件保存在服务器上的某个位置
- ajax调用完成后,它可能会返回显示刚刚上传的文件的url
- 然后使用window.open(url)(例如pdf.aspx?id=[some_id_or_name])
在您的pdf.aspx中,您应该在本地加载文件,并通常使用适当的头将其传输到客户端。
evet如果您在"OpenPDF.aspx"上传递文件名,它将不起作用,因为您的上传操作将在"打开PDF.aspx"打开后执行。
您可以在BtnUpload_Click级别上将文件保存到服务器,然后注册客户端脚本以打开保存的文件。