如何在asp.net上查看文件

本文关键字:文件 net asp | 更新日期: 2023-09-27 18:15:37

我正在尝试从asp.net中的文件夹查看文件。我已经尝试使用"响应"类及其许多功能来查看文件,但到目前为止我还没有成功。大多数情况下,使用Response类允许我下载文件,但不能在浏览器中查看它们。我在网上看到的大多数建议都是一样的,那就是使用这段代码:

string fileName = "Myfile.pdf";
Response.ContentType = "application/pdf";
Response.AddHeader("Content-Disposition", "inline; filename="+fileName);

但是,这只允许我下载文件,而不能在浏览器中查看。

有什么建议吗?

如何在asp.net上查看文件

这是我的工作:

        Response.Clear();
        Response.AddHeader("Content-Length", binaryFile.Length.ToString(CultureInfo.InvariantCulture));
        //Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}", title)); // save file as attachment
        Response.AddHeader("Content-Disposition", string.Format("inline; filename={0}", title)); // display inline in browser
        Response.AddHeader("Content-Type", "application/pdf");
        Response.BinaryWrite(binaryFile);
        Response.Flush();
        Response.End();

下面是一些使用免费HTML文件浏览器的好项目:

https://github.com/magicbruno/FileBrowser

另一种选择是使用类似ASP的东西。NET GridView和处理浏览特定文件夹。以下是简短的示例。

ASPX代码:

<asp:GridView ID="GridView1" runat="server"></asp:GridView>

页面代码:

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        DisplayDirectoryContent(Server.MapPath("~"));
    }
}
void DisplayDirectoryContent(string directory)
{
    System.Data.DataTable data = new System.Data.DataTable();
    data.Columns.Add("Name",typeof(string));
    data.Columns.Add("IsFolder", typeof(bool));
    foreach (var dir in System.IO.Directory.GetDirectories(directory))
    {
       System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(directory);
       data.Rows.Add(new object[] { di.Name, true });
    }
    foreach (var file in System.IO.Directory.GetFiles(directory))
    {
        System.IO.FileInfo fi = new System.IO.FileInfo(file);
        data.Rows.Add(new object[] { fi.Name, false });
    }
    GridView1.DataSource = data;
    GridView1.DataBind();
}

请注意,你不能直接在浏览器中查看任何文件,但你可以链接下载操作到GridView(类似于你的代码)。这是它的工作原理