尝试在客户端打开文件时“访问被拒绝”

时间:2009-10-22 06:26:51

标签: c# asp.net javascript

我在c#中开发一个web应用程序,其中我正在使用以下代码。 尝试在客户端打开文件时,“访问被拒绝”。

String strPop = "<script language='javascript'>" + Environment.NewLine + 
                "window.open('C://myLocalFile.txt'," +
                "'Report','height=520,width=730," + 
                "toolbars=no,scrollbars=yes,resizable=yes');" + 
                Environment.NewLine + "</script>" + Environment.NewLine;
Page.RegisterStartupScript("Pop", strPop);

有什么问题?以及如何克服它?

4 个答案:

答案 0 :(得分:6)

您无法使用JavaScript访问客户端文件,访问文件的唯一方法是首先将其上传到服务器或Flash应用程序。

答案 1 :(得分:2)

JavaScript对访问本地文件系统上的文件有很强的限制,我认为你可能会混淆客户端和服务器端的概念。

JavaScript在客户端的Web浏览器中运行。

我不确定你想要达到的目的,但是:

  • 如果您尝试在客户端计算机上打开文件,则应将其上传。

  • 如果您尝试在服务器上打开文件,则应将其放在Web应用程序中的可访问位置。

答案 2 :(得分:0)

将文件移动到您的网站文件夹并生成指向它的链接。

答案 3 :(得分:0)

如前所述,您无法使用Javascript打开客户端文件。但是,Silverlight确实允许这样做,因此只要您不介意该依赖项,就可以嵌入Silverlight控件来处理该文件。

private void btnOpenFile_Click(object sender, RoutedEventArgs e)
{
    OpenFileDialog dlg = new OpenFileDialog();
    dlg.Filter = "Text Files (.txt)|*.txt|All Files (*.*)|*.*";
    dlg.FilterIndex = 1;
    bool? userClickedOK = dlg.ShowDialog();
    System.IO.Stream fileStream = dlg.File.OpenRead();
    //do whatever you want with the fileStream ...
    fileStream.Close();
}