GridView下载子文件夹中的文件

时间:2014-07-02 10:17:01

标签: c# asp.net gridview

我有一个包含数据的GridView,包括文件名,我只能从一个文件夹下载文件,无法下载子文件夹中的文件。我一直在用这个

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) 
{
if (e.CommandName == "Download")
{
    Response.Clear();
    Response.ContentType = "application/octet-stream";
    Response.AppendHeader("Content-Disposition", "filename=" + e.CommandArgument);
    Response.TransmitFile(Server.MapPath("Upload\\Track\\Files") + e.CommandArgument);
    Response.End();
    }
} 

我已尝试添加此功能,但我收到一条错误消息,说明其非法。

string path = Server.MapPath("\\Upload\\Track\\Files\\ ,*," + SearchOption.AllDirectories);
Response.TransmitFile(path + e.CommandArgument);

我希望能够使用此方法下载所有文件,包括子文件夹中的文件。

更新 - 我也尝试过这种方式,但没有成功,我知道我可以走正确的道路,但它不会下载。

string path = Server.MapPath("\\Upload\\Track\\Files");
string filename = e.CommandArgument.ToString();
DirectoryInfo dir = new DirectoryInfo(path);

string pathString = System.IO.Path.Combine(dir + path);

if (e.CommandName == "Download")
{
System.IO.Directory.GetDirectories(path);
if (File.Exists(pathString)) { 
Response.Clear();
Response.ContentType = "application/octet-stream";
Response.AppendHeader("Content-Disposition", "filename=" + filename);
Response.TransmitFile(pathString);
Response.End();

1 个答案:

答案 0 :(得分:0)

所以我找到了一个问题的解决方案,我在我的数据库中添加了一个字段,其中包含有关路径的信息 - 我从上传文件时获取此路径,该文件捕获路径并将其添加到数据库中。我还在GridView的上传字段中添加了以下代码。

此解决方案目前最适合我,但当然可以改进。

<asp:TemplateField HeaderText="Quote" InsertVisible="false">
<ItemTemplate>
<a href="<%# Eval("FilePath") %>/<%# Eval("Uploads") %>"><%# Eval("Uploads") %></a>
</ItemTemplate>
</asp:TemplateField>