2012-01-02 52 views
2

我正在一个文件管理系统中工作。我已经上传了一个文件到服务器上的一个目录中,并且我列出了所有上传文件的文件名为linkbutton的gridview。如何从服务器目录打开文件?

我的问题是,我必须在单击文档名称时打开该特定文件,这实际上是一个链接按钮。这是我的代码。

protected void gdlbtnDocName_Click(object sender, EventArgs e) 
{ 
    try 
    { 
     LinkButton lkbtn = (LinkButton)sender; 
     if (File.Exists(lkbtn.CommandArgument)) 
     { 
      System.Diagnostics.Process.Start(lkbtn.CommandArgument); 
     } 
    } 
    catch (Exception ex) 
    { 
     lblMessage.Text = ex.Message.ToString(); 
    } 
} 

lkbtn.CommandArgument是文件路径说(G:\ dms \ eg.text)。 这段代码在开发centre中工作正常。但是当我发布它并在本地主机上运行时,它不起作用。

任何一个可以帮助我,请....

+0

这是一个Web应用程序或WinForms的? – Nicolai 2012-01-02 10:20:53

+0

它是一个web应用程序 – ksg 2012-01-02 10:40:56

回答

1

你面临的问题是,会的Process.Start您的服务器,以便该文件将在您的本地主机没有打开上运行,但在服务器上。

如果要打开存储在服务器上的文档,首先必须将其下载到本地计算机。 如果这不是一个选项,您可以创建用户可以在浏览器中查看的文档的预览。

如何创建预览取决于您要显示的文件类型。

对于一个简单的文本文件,你可以直接读取服务器上的文件和渲染的字符串(确保做一些Html Encoding!)

在一个项目中,我对我们的工作也必须显示PDF和Word文件。我们最终使用Aspose的商业产品。当用户将文件上传到服务器时,我们立即处理文件通过Aspose,然后将结果缓存在文件系统上。


+0

嗨Wouter我明白了这个问题。可以告诉你如何创建一个文档的预览。我新来的c# – ksg 2012-01-02 10:49:00

+0

@ksg我已经添加了一些更多的信息。不要犹豫,问你是否有任何问题。 – 2012-01-06 07:42:27

3

你需要像下面这样的脚本来从服务器机器上下载文件。 process.start将不起作用这个

在下面的脚本我下载csv文件从服务器上点击按钮。

string attachment = "attachment; filename=OutputPeoplesoft.csv"; 
    HttpContext.Current.Response.AppendHeader("content-disposition", attachment); 
    HttpContext.Current.Response.ContentType = "text/csv"; 
    HttpContext.Current.Response.AppendHeader("Pragma", "public"); 
    Response.WriteFile(strFilename); 
    HttpContext.Current.Response.End(); 
+0

嗨Pranay我不想下载。我只是想查看点击的文件 – ksg 2012-01-02 10:36:24

+0

比你在@Nasir回答中提供的gof ro iframe选项 – 2012-01-02 10:39:48

0

您可以使用iframe用于此目的和路径设置为iframe的源这样

<iframe src="G:\dms\eg.text"></iframe> 
相关问题