也许我所拥有的标题并不能100%反映我的问题,但我会尽量让它更清晰。 That is how our system is right now.
我们有一个在互联网上公开的Web服务器和可以访问Fileserver的Web服务器。我们希望客户端无需Web服务器上的文件就可以从Fileserver下载文件。是否有任何技术可用于这类请求?
我们正在使用 ASP。 NET WebForms 。
提前致谢。
答案 0 :(得分:0)
我不知道任何可以做到这一点的框架,但我实现了类似的东西。在我们的例子中,我们有一个用户应该能够在数据库中下载的文件列表,但您可以使用System.IO.Directory自己查询某个文件夹中的可用文件。它还要求应用程序在具有允许访问文件共享的身份(用户)的应用程序池中运行。
实际下载是作为ASP.Net WebHandler(.ashx-File)实现的。当用户点击Handler时,我基本上在ProcessRequest方法中做了类似的事情:
string fileName = "\\\\myServer\\folder\\file.pdf";
byte[] fileContent = System.IO.File.ReadAllBytes(fileName);
context.Response.Clear();
context.Response.ClearHeaders();
context.Response.ClearContent();
context.Response.ContentType = "application/pdf";
context.Response.AddHeader("Content-Disposition", "attachment;filename=" + System.IO.Path.GetFileName(fileName));
context.Response.AddHeader("Content-Length", fileContent.Length.ToString());
context.Response.BinaryWrite(fileContent);
当然,如果您正在处理更大的文件,您可能不希望将整个文件加载到内存中,而是读取块并多次调用BinaryWrite。您还应将ContentType设置为适合您的文件类型的MIME类型,以便客户端浏览器正确处理它。