C# 如何在新窗口中打开图像或pdf文件?

C# 如何在新窗口中打开图像或pdf文件?,c#,javascript,asp.net,C#,Javascript,Asp.net,我有一个gridview,它包含文件名和文件路径(图像和pdf格式文件),我使用了模板字段,在下面我放了一个图像按钮。单击该图像按钮,即查看按钮,我想在新窗口中打开选定的文件 这是我的密码: protected void GVViewFile_SelectedIndexChanged(object sender, EventArgs e) { int id = GVViewFile.SelectedIndex; string path = GVViewFile.Rows[id].

我有一个gridview,它包含文件名和文件路径(图像和pdf格式文件),我使用了模板字段,在下面我放了一个图像按钮。单击该图像按钮,即查看按钮,我想在新窗口中打开选定的文件

这是我的密码:

protected void GVViewFile_SelectedIndexChanged(object sender, EventArgs e)
{
    int id = GVViewFile.SelectedIndex;
    string path = GVViewFile.Rows[id].Cells[2].Text.ToString();

    Response.Redirect("D:\UploadedAttachment\AT\MRD\AT0520130008_15-05-13-03-57-12.pdf");

    Response.Write("<script>");
   Response.Write("window.open('" + path + "','_blank', ' fullscreen=yes')");
   //Response.Write("window.open(" + path + ",'_blank')");
   Response.Write("</script>");

}

它只适用于相对路径。 为什么首先你需要路径?
另外,用户注册表Startupscript用于脚本绑定到页面。

在html响应中,您正在使用url路径进行操作。所以打开的路径应该是有效的url(绝对或相对于应用程序),或指向文件的链接:file://path/to/file,打开计算机中的某些目录浏览器

您可以使用NavigateUrl和target=“\u blank”或一些javascript设置超链接控件。指向绝对服务器路径的链接将不起作用。

Response.Write(string.Format(“window.open”(“{0}”,“\u blank”);“pdf/aaaa.pdf”);
 Response.Write(string.Format("<script>window.open('{0}','_blank');</script>", "pdf/aaaa.PDF"));

当您绑定FileLocationPath时,请尝试绑定它以使您的文件名

D:\UploadedAttachment\AT\MRD\AT0520130008_15-05-13-03-57-12.pdf
变成

file:///D:/UploadedAttachment/AT/MRD/AT0520130008_15-05-13-03-57-12.pdf
//在Default2.aspx中
受保护的无效链接按钮1\u单击(对象发送者,事件参数e)
{
Write(string.Format(“window.open(“{0}”、“_blank”);”和“Default3.aspx”);
}
//------------
//在Default3.aspx中
受保护的无效页面加载(对象发送方、事件参数e)
{
字符串路径=Server.MapPath(“~\\E:\\karthikeyan\\venky\\pdf\\aaaa.pdf”);
WebClient客户端=新的WebClient();
字节[]缓冲区=客户端下载数据(路径);
if(缓冲区!=null)
{
Response.ContentType=“application/pdf”;
AddHeader(“content-length”,buffer.length.ToString());
二进制写入(缓冲区);
}
}

abort()函数可能是最好的选择。它是C标准库的一部分,定义为“导致异常程序终止”(例如,致命错误或崩溃)。

从gridview中我将获得路径。所以我只能用这个。路径是完整路径。怎么办?那么我的解决方案是什么??你能给我一些建议吗?@cherhan我粘贴了,但是prob不在gridview中,prob是我无法在新窗口中打开路径(例如D:\uploadeAttachment\AT\MRD\AT0520130008\u 15-05-13-03-57-12.pdf)。“~/uploadeAttachment\AT\MRD\AT0520130008\u 15-05-13-03-57-12.pdf”像这样试试……你在用什么浏览器?@AmitSingh'\'显示synatxerror@SamSimon我不认为你可以这样做…你可以在你的网站文件夹中包含图像或在任何其他服务器上包含主机图像..它不能采用本地系统路径..你可以提供…URL..我认为…你可以在你的网站目录中创建上载文件夹,但不能在你的服务器之外网站目录嘿如何使用字符串“path”在那里?pdf/aaaa.pdf是pdf文件的路径,你没有把~/或/放在pdf/aaaa.PDFi之前,我想你没有明白我的意思。我有一个显示图像,它的路径在下面D:\UploadeAttachment\AT\MRD\AT0520130008_15-05-13-03-57-12.pdf,我是从字符串路径获取的。我是从项目解决方案文件夹下获取文件路径的,所以我是这样使用的。好的..但我想从proj文件夹中提取文件,可能是不可能的..无论如何,你能截图吗?很棒的代码!!!我正在使用选项2,但如何在新窗口中打开?@Dan B-使用此选项它具有所有设置:):-ScriptManager.RegisterStartupScript(此,typeof(string),“open_window”,“var Mleft=(screen.width/2)-(760/2);var Mtop=(screen.height/2)-(700/2);window.open('WebForm2.aspx',null,'height=700,width=760,status=yes,toolbar=no,scrollbars=yes,menubar=no,location=no,top=\'+Mtop+\'',left=\'+Mleft+\'');true);谢谢@karthi。我明白了,但我喜欢你的脚本!
file:///D:/UploadedAttachment/AT/MRD/AT0520130008_15-05-13-03-57-12.pdf
//In Default2.aspx
protected void LinkButton1_Click(object sender, EventArgs e)
    {
       Response.Write(string.Format("<script>window.open('{0}','_blank');</script>", "Default3.aspx"));
    }

//------------
//In Default3.aspx

protected void Page_Load(object sender, EventArgs e)
    {
        string path = Server.MapPath("~\\E:\\karthikeyan\\venky\\pdf\\aaaa.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);
        }
    }