對於我正在工作的項目,我需要提供http訪問文件,我只有ftp訪問權限。這被用作需要下載文件但僅支持http的外部服務。我嘗試了下面的代碼:但CPU /內存使用率是通過屋頂,它慢慢死亡。有什麼建議麼?簡單的ftp下載器/ http代理
using System;
using System.Web;
using System.Net;
using System.IO;
public class ftpproxy : IHttpHandler
{
// ftpproxy.ashx?src=ftp://username:[email protected]/staticfiles/foo.f4v
public void ProcessRequest (HttpContext context) {
WebClient wc = new WebClient();
string src = context.Request.QueryString["src"];
using (Stream instr = wc.OpenRead(src))
{
instr.CopyTo(context.Response.OutputStream);
}
}
public bool IsReusable {
get {
return false;
}
}
}
謝謝!
哦,這些都是大文件(幾百個兆的一對夫婦音樂會)
您是否嘗試過在使用塊中包裝'WebClient'? – 2012-04-18 22:21:04
此外,您的代碼目前的工作方式我相信它會將它全部加載到內存中,然後從內存寫入磁盤。如果你想減少內存負載,你需要偶爾寫入磁盤。 – Origin 2012-04-18 22:26:42
我曾希望有一種方法可以直接從輸入流複製到使用默認使用'CopyTo'的4K緩衝區的輸出流,顯然我誤解了它的工作原理? – 2012-04-18 22:27:52