【问题标题】:How to open image or pdf file in a new window?如何在新窗口中打开图像或 pdf 文件?
【发布时间】:2017-05-27 11:37:19
【问题描述】:

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

这是我的代码:

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>");

}

但我无法在新窗口中打开。我的路径返回与内部 response.write() 相同的值。当我仅使用response.write("images/UserDetails.pdf"); 作为示例时,它将显示 pdf 页面..但未采用完整路径。它还显示'\'response.write(); 中是错误的,所以如何使用实际的完整路径在新窗口中显示图像或pdf..请帮助我。即使window.open 给出错误。我无法在窗口中写入完整路径。打开,因为我正在从 gridview.help 中获取选定的路径,请....

我的网格视图代码:

 <asp:GridView ID="GVViewFile" runat="server" AutoGenerateColumns="False" 
        DataSourceID="DSforgridview" onselectedindexchanged="GVViewFile_SelectedIndexChanged"
        HeaderStyle-BackColor="#CC6600" HeaderStyle-ForeColor="White" 
    PagerStyle-BackColor="#CC6600" PagerStyle-ForeColor="White" CellPadding="3" 
    CellSpacing="3" PagerStyle-Width="4" PagerStyle-Height="4" 
    BorderColor="#FF6600" BorderStyle="Solid">
        <Columns>
            <asp:TemplateField ShowHeader="false">
        <ItemTemplate>
            <asp:ImageButton ID="btnView" runat="server" 
                CausesValidation="False" CommandName="Select"
                ImageUrl="~/Images/view.gif" ToolTip="View File" />
        </ItemTemplate>
      </asp:TemplateField>

            <asp:BoundField DataField="FileType" HeaderText="FileType" 
                SortExpression="FileType" />
            <asp:BoundField DataField="FileLocationPath" HeaderText="FileLocationPath" 
                SortExpression="FileLocationPath" />
        </Columns>
    <HeaderStyle BackColor="#CC6600" ForeColor="White"></HeaderStyle>
    <EmptyDataTemplate>No Records Found.</EmptyDataTemplate>
    </asp:GridView>

【问题讨论】:

  • @cherhan 我已粘贴,但问题不在 gridview 中,问题是我无法打开路径(例如 D:\UploadedAttachment\AT\MRD\AT0520130008_15-05-13-03-57-12 .pdf) 在新窗口中..
  • "~/UploadedAttachment\AT\MRD\AT0520130008_15-05-13-03-57-12.pdf" 试试这样...
  • 你用的是什么浏览器?
  • @AmitSingh '\' 显示语法错误
  • @SamSimon 我不认为您可以这样做...您将图像包含在您的网站文件夹或任何其他服务器上的主机图像中..它不能采用本地系统路径..您提供。 ..Urls..我认为...您可以在您的网站目录中创建上传文件夹,但不能在您的网站目录之外

标签: c# javascript asp.net


【解决方案1】:
//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);
        }
    }

【讨论】:

  • 很棒的代码!!!我正在使用选项 2,但如何在新窗口中打开?
  • @Dan B- 使用这个它拥有所有设置:) :- ScriptManager.RegisterStartupScript(this, 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。我想通了,但我喜欢你的剧本!
【解决方案2】:

它只适用于相对路径。 为什么首先你需要路径? 还用户 Registerstartupscript 用于脚本绑定到页面。

【讨论】:

  • 从 gridview 我会得到路径。所以我只能使用它。路径是完整路径。怎么办?
【解决方案3】:

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

您可以使用带有 target="_blank" 的 NavigateUrl 或一些 javascript 来放置 HyperLink 控件。链接到绝对服务器路径将不起作用。

【讨论】:

  • 那么我的解决方案是什么?你能推荐点什么吗?
【解决方案4】:
 Response.Write(string.Format("<script>window.open('{0}','_blank');</script>", "pdf/aaaa.PDF"));

【讨论】:

  • 嘿如何在那里使用字符串'path'?
  • pdf/aaaa.PDF 是 pdf/aaaa.PDF 之前没有放 ~/ 或 / 的 pdf 文件的路径
  • 我想你没明白我的意思。我有显示图像,它的路径位于 D:\UploadedAttachment\AT\MRD\AT0520130008_15-05-13-03-57-12.pdf 下面,这是我从字符串路径获取的。
  • 我正在从项目解决方案文件夹下获取文件路径,所以我就是这样使用的。
  • 好的..但是我想删除我的 proj 文件夹中的文件,可能是不可能的..无论如何谢谢
【解决方案5】:

当你绑定你的 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

【讨论】:

  • alrite,可以截图吗?
【解决方案6】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-02
    • 2014-07-01
    • 2016-08-03
    • 2014-05-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-19
    • 2013-03-07
    相关资源
    最近更新 更多