我有一个gridview,其中点击链接按钮上有链接按钮我可以下载文件,如pdf,jpeg,doc但我想在点击链接按钮上显示浏览器
string pdfPath = Server.MapPath("~/SomePDFFile.pdf");
WebClient client = new WebClient();
Byte[] buffer = client.DownloadData(pdfPath);
Response.ContentType = "application/pdf";
Response.AddHeader("content-length", buffer.Length.ToString());
Response.BinaryWrite(buffer);
但是我想在浏览器中的链接按钮内打开像jpeg,pdf,doc gridview这样的文件
答案 0 :(得分:1)
这取决于文件类型以及当前系统如何配置来处理该类型。
例如,默认情况下,大多数图像 只能在浏览器中打开;然而,对我来说,我已将Chrome配置为PDF文件的默认注册应用程序,但现在这几乎不是标准的事情,许多普通用户将会在安装其他东西时告诉他们下载的内容,有点像Foxit读者 - 在这种情况下,如果浏览器未注册处理文件类型,则不会发生。
答案 1 :(得分:1)
在浏览器中显示PDF的第一种方法
protected void btnOpen_Click(object sender, EventArgs e)
{
Response.Redirect("SiteAnalytics.pdf");
}
通过设置Response对象的Content Type并在标题中添加pdf的二进制形式,在浏览器中显示PDF的第二种方式
protected void btnpdf_Click(object sender, EventArgs e)
{
string path = Server.MapPath("SiteAnalytics.pdf");
WebClient client = new WebClient();
Byte[] buffer = client.DownloadData(path);
if (buffer != null)
{
Response.ContentType = "application/pdf";
Response.AddHeader("content-length", buffer.Length.ToString());
Response.BinaryWrite(buffer);
}
答案 2 :(得分:0)
您应指定Content-Disposition: inline
标头。如果浏览器支持您在Content-Type
标题中指定的类型的显示,它将显示在浏览器中。
相反的是Content-Disposition: attachment
,它会强制浏览器为您的内容提供“另存为”按钮(即使它是HTML)。
答案 3 :(得分:0)
您可以在同一页面或其他页面上的iframe中显示pdf,jpg等。 例如:
<iframe id="iframe" runat="server" src="NameOfYourFolder/pdf.pdf"></iframe>
这里我已经硬编码了pdf文件的路径,该文件将显示在iframe中。您需要创建一种机制来获取与GridView中的链接按钮关联的文件的路径,并通过嵌入的代码块将该路径传递给iframe的src。