我正在尝试从asp.net中的文件夹中查看文件。我已经尝试使用“Response”类及其许多函数来查看文件,但到目前为止我一直没有成功。大多数情况下使用Response类允许我下载文件,但不能在浏览器中查看它们。我在网上看到的大部分内容都暗示了使用这段代码的相同内容:
string fileName = "Myfile.pdf";
Response.ContentType = "application/pdf";
Response.AddHeader("Content-Disposition", "inline; filename="+fileName);
但同样,这只允许我下载文件,而不是在浏览器中查看。
关于我如何做到这一点的任何建议?
答案 0 :(得分:1)
这对我有用:
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();
答案 1 :(得分:0)
这是一个使用基于免费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();
}
请注意,您无法直接在浏览器中查看任何文件,但您可以将downolad操作链接到GridView(类似于您的代码)。这是它的工作原理。