如何从服务器目录中打开文件?

时间:2012-01-02 10:06:32

标签: c#

我正在使用文件管理系统。我已将文档上传到服务器中的目录中,并且我已将所有上传的文件列在gridview中,文档名称为linkbutton。

我的问题是我要点击文件名打开该特定文件,这实际上是一个链接按钮。这是我的代码。

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)。 这段代码在开发中心工作正常。但是当我发布它并在localhost上运行时,它无效。

任何人都可以帮助我......

3 个答案:

答案 0 :(得分: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();

答案 1 :(得分:1)

您遇到的问题是Process.Start将在您的服务器上运行,因此文档不会在您的localhost上打开,而是在服务器上打开。

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

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

对于一个简单的文本文件,您只需读取服务器上的文件并呈现字符串(确保执行一些Html Encoding!)

在我参与的项目中,我们还必须显示PDF和Word文件。我们最终使用了来自Aspose的商业产品。当用户将文件上传到服务器时,我们会立即通过Aspose处理文件,然后将结果缓存到文件系统上。


答案 2 :(得分:0)

您可以将iframe用于此目的,并将该路径设置为iframe源,如此

<iframe src="G:\dms\eg.text"></iframe>