我試圖使用C#(ASP.NET)下載遠程文件。問題是,當我瀏覽到文件下載URL - 它完美下載。當我嘗試WebClient.DownloadData(url)時,我得到「無數據顯示」響應。使用.NET遠程文件下載
如果我使用內置的VS2010瀏覽器瀏覽,我仍然會收到此「錯誤」消息。
如何將文件下載?有任何想法嗎?
非常感謝
我試圖使用C#(ASP.NET)下載遠程文件。問題是,當我瀏覽到文件下載URL - 它完美下載。當我嘗試WebClient.DownloadData(url)時,我得到「無數據顯示」響應。使用.NET遠程文件下載
如果我使用內置的VS2010瀏覽器瀏覽,我仍然會收到此「錯誤」消息。
如何將文件下載?有任何想法嗎?
非常感謝
這不是你側的下載問題,即頁面引用的東西,可能是從會議......所以你需要登錄到該網站,獲得一個會話,基本上執行通常在路由中獲取文件的任何步驟,以便正確/可用。
如果我不得不猜測,我認爲他們會在你要求時將文件導出到文件系統,所以它是一個臨時文件,不是你可以抓取的東西,所以除非你去了通過創建它的步驟(似乎不是這個Export.aspx頁面所做的),它不會在那裏,它們的錯誤消息是「沒有數據顯示」。
也有可能他們明確阻止你,以防止發生任何形式的機器人/瘙癢......基本上阻止你正在嘗試做什麼。
許多網站將根據Referer或User-Agent標題阻止下載。
我通過獲取遠程文件作爲流解決了這個問題。從那時起,我能夠讀取/寫入響應流。
//The absolute path to your file
string remoteFile = "http://my.cloudfront.net/videos/vehicle_english_v3.mp4";
//The name of the file you want the user to see when they download the file
int pos = remoteFile.LastIndexOf("/") + 1;
string fileName = remoteFile.Substring(pos, remoteFile.Length - pos);
//Obtain your file as a stream
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(remoteFile);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream fileStream = response.GetResponseStream();
//Write the stream to the response
if (fileStream != null && fileStream.CanRead) {
context.Response.AddHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
context.Response.ContentType = "application/octet-stream";
context.Response.ClearContent();
fileStream.CopyTo(context.Response.OutputStream);
}
當我點擊我的瀏覽器(FF)該鏈接時,我得到「沒有數據顯示」,所以它可能是基於會話尼克說。 – svick 2010-06-20 16:22:58