1

我有一个 gridview 字段:

<asp:TemplateField HeaderText="View File">
    <ItemTemplate >     
        <asp:HyperLink ID="LinkView" runat="server" Target="_blank"></asp:HyperLink>
    </ItemTemplate>
    <ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" />
</asp:TemplateField>  

在后面的代码中,(Gridview 的 RowBound)

Dim lnk As HyperLink = DirectCast(e.Row.FindControl("LinkView"), HyperLink) 
lnk.Attributes.Add("onclick", "OpenPdf('" + "file://" + fileName + "')")

前任。文件名:E:\MyFolder\F1\File_01_15_2013_000100.pdf 和javascript函数:

function OpenPdf(path1) {
    window.open(path1);
}

但它不起作用。在 IE 中,我收到一个错误:Access denied在 Firefox 中:NS_ERROR_FAILURE: Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIDOMJSWindow.open]

4

1 回答 1

1

你得到了文件的物理路径,而不是你必须给出文件的虚拟路径,比如

fileName = "http://yourdomain.com/files/a.pdf"

您需要将文件放在网站目录结构中,以便通过您的域访问路径。假设您的当前页面位于根目录下,pdf 文件位于文件夹中。如果不想将图像放在网站的虚拟目录中,则可以创建一个包含文件的新虚拟目录。

在您的网站内创建一个虚拟目录,并提供位于您的网站文件夹之外并包含图像的文件夹路径。现在这个文件夹将作为您网站的一部分,您不会收到错误。如何创建虚拟目录,MSDN

假设您有网站文件夹 d:\Yoursites\Testsite 并且您想访问 d:\file\a.pdf 中的文件,在 TestWebsite 侧创建一个虚拟目录指向 d:\files 并通过虚拟目录访问其中的文件。

pdf 的 URL 类似于

http://yoursite.com/yourvirtualdirectoryname//a.pdf

于 2013-01-29T12:06:19.163 回答