将Web服务器上的文件的下载功能写入客户端PC。

时间:2012-10-24 08:52:55

标签: c# jquery

您好,我需要编写一个下载功能,所以当我的网站用户点击一个按钮时,该文件会被下载到PC上。

如果我将其用作链接,则会下载该文件:

http://formvalue.co.za/download/" + fileName + ".xlsx"

但之后我无法做任何事情,所以我需要在一个函数中使用它,以便我可以在下载后从我的服务器中删除该文件。

我正在使用MVC,因此该函数可以在Jquery或C#中。

任何人都可以提供帮助,如果您需要任何信息,请提前致谢。

1 个答案:

答案 0 :(得分:1)

你能简单地使用一个回复到服务器的LinkBut​​ton并调用以下方法吗?

internal static void ContentToBrowser(string contentType, string filename, string content)
        // Send to browser
        var response = HttpContext.Current.Response;
        response.Clear();
        response.ContentType = contentType;
        response.AddHeader("Content-Disposition", 
                    String.Format("attachment; filename=\"{0}\"", filename));
        var contentLength = response.ContentEncoding.GetByteCount(content);
        response.AddHeader("Content-Length", contentLength.ToString());
        response.Write(content);
        response.End();
}

这允许您将所需内容直接写回客户端,而无需担心存储在服务器上。 e.g。

protected void LinkButtonClick(object sender, EventArgs e)
{
     string filename = @"c:\filepath\blah.xlsx";
     string content = File.ReadAllText(filename);
     ContentToBrowser("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "downloaded-blah.xlsx", content);
     File.Delete(filename);
}

但是,我不得不质疑你之后删除文件的动机。您如何知道它已被客户成功下载和存储?