4

我有一个页面,用于从数据库中提取文件并提示下载或流式传输到浏览器,具体取决于 URL 的格式。这工作正常,但是当我尝试设置页面标题并且它默认为 URL 中的域名时,我所做的一切都不起作用。

我意识到这很可能发生,因为我正在使用将二进制文件发送到浏览器Response.OutputStream.Write(buffer, 0, bytesRead),因此根据我在网上找到的其他内容“我正在用二进制文件填充缓冲区,所以我无法控制标题”

您正在用二进制文件填充缓冲区,没有 HTML,因此没有标题标签。我不确定此时您是否可以控制浏览器中的 Title 标记。让我检查一下我现在拥有的带有 PDF 的页面。至少在我正在查看的示例中,这似乎无法做到。我打开了另一个 PDF,但它直接指向本地文件,并且在浏览器中设置了 Title 标签。我不确定这是否嵌入在 PDF 中。

在这里找到:http ://forums.asp.net/t/1088814.aspx/1

我已经尝试了所有正常的地方来设置页面标题:

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="FileServer.aspx.vb" Inherits="FileServer" Title="Title goes here" %>

或者

<head runat="server">
    <title>Title goes here</title>
</head>

或者

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim FileNumber As String = RouteData.Values("FileNumber")
        Dim Disposition As String = RouteData.Values("Disposition")

        If FileNumber IsNot Nothing Then
            Title = "Title goes here"
            ServeFile(FileNumber, Disposition)
        End If
End Sub

我有什么办法可以设置这个标题还是我不​​走运?

4

1 回答 1

4

您不能在将文件发送到浏览器的同时设置标题。为了让浏览器改变“页面”的标题,它需要实际渲染一个 HTML 文档(即它需要渲染一个页面)。

在这种情况下,您不会发送任何有效的 HTML 内容,因此您发送的内容会被下载。

如果你想这样做,你需要做的就是做一种“反弹”。重定向到呈现标题的页面以及您想要的任何其他内容(即 aspx 页面)。并从该页面“反弹”浏览器进行下载。

于 2012-08-21T13:55:54.760 回答