Hur laddar jag ned en fil med .net? kolla på webrequest och getresponse. Spara innehållet och skriv ut det i en fil... Lyckades få ihop detta efter lite letande här o var, men det blir fel och jag antar att det finns smartare sätt? Fick det att funka :DLadda ner fil (http)
(exempel, ladda ner + spara på disk)
//ThomasSv: Ladda ner fil (http)
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemnethttpwebrequestclassgetresponsetopic.aspSv: Ladda ner fil (http)
<code>
private void laddaNer(string strServerFil,string strLokalFil)
{
HttpWebRequest wr = (HttpWebRequest)HttpWebRequest.Create(strServerFil);
HttpWebResponse ws = (HttpWebResponse)wr.GetResponse();
Stream str = ws.GetResponseStream();
FileStream fstr = new FileStream(strLokalFil, FileMode.OpenOrCreate,FileAccess.Write);
for(int i=0;i<str.Length/1024;i++) //Sökningsfel i strömmen :(
{
byte[] inBuf = new byte[1024];
int bytesToRead = (int) inBuf.Length;
int bytesRead = 0;
while (bytesToRead > 0)
{
int n = str.Read(inBuf, i*1024+bytesRead,bytesToRead);
if (n==0)
break;
bytesRead += n;
bytesToRead -= n;
}
fstr.Write(inBuf, i*1024, bytesRead);
}
str.Close();
fstr.Close();
}
</code>
- ThomasSv: Ladda ner fil (http)
<code>
private void laddaNer(string strServerFil,string strLokalFil)
{
HttpWebRequest wr = (HttpWebRequest)HttpWebRequest.Create(strServerFil);
HttpWebResponse ws = (HttpWebResponse)wr.GetResponse();
Stream str = ws.GetResponseStream();
FileStream fstr = new FileStream(strLokalFil, FileMode.OpenOrCreate,FileAccess.Write);
byte[] inBuf = new byte[100000];
while(inBuf!=null)
{
int n=0;
int bytesReadNow = 0;
int bytesToRead = (int) inBuf.Length;
while (bytesToRead > 0)
{
n = str.Read(inBuf, bytesReadNow,bytesToRead);
Debug.WriteLine("n="+n);
if (n==0)
break;
bytesReadNow += n;
bytesToRead -= n;
}
Debug.WriteLine(bytesReadNow);
fstr.Write(inBuf, 0, bytesReadNow);
if(n==0) break;
Debug.WriteLine("loop");
}
str.Close();
fstr.Close();
inBuf=null;
}
</code>
- Thomas
PS. InBuf!=null kanske ska bytas ut...