2012-01-25 42 views
-1

我需要替換WebRequestFactory,這是幹什麼的?有人可以幫我做這項工作嗎?來自url的小型框架下載文件

Public Shared Sub download_file() 
     Dim wr As HttpWebRequest = CType(WebRequestFactory.Create("http://www.test.com/test.jpg"), HttpWebRequest) 
     Dim ws As HttpWebResponse = CType(wr.GetResponse(), HttpWebResponse) 
     Dim str As Stream = ws.GetResponseStream() 
     Dim inBuf(100000) As Byte 
     Dim bytesToRead As Integer = CInt(inBuf.Length) 
     Dim bytesRead As Integer = 0 
     While bytesToRead > 0 
      Dim n As Integer = str.Read(inBuf, bytesRead, bytesToRead) 
      If n = 0 Then 
       Exit While 
      End If 
      bytesRead += n 
      bytesToRead -= n 
     End While 
     Dim fstr As New FileStream("test.jpg", FileMode.OpenOrCreate, FileAccess.Write) 
     fstr.Write(inBuf, 0, bytesRead) 
     str.Close() 
     fstr.Close() 
    End Sub 'Main 

回答

0

請嘗試以下代碼:

public static void getfile(string url, string filename) 
{ 

    try 
    { 
     string full_url = url + "/" + filename; 

     HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create(full_url); 
     httpRequest.Credentials = CredentialCache.DefaultCredentials; 

     HttpWebResponse httpResponse = (HttpWebResponse)httpRequest.GetResponse(); 

     System.IO.Stream dataStream = httpResponse.GetResponseStream(); 

     // Dim str As Stream = cdsMobileLibrary2.http_download.getfile(filename) 

     //10 meg 
     byte[] inBuf = new byte[10000001]; 
     int bytesToRead = Convert.ToInt32(inBuf.Length); 
     int bytesRead = 0; 
     while (bytesToRead > 0) 
     { 
      int n = dataStream.Read(inBuf, bytesRead, bytesToRead); 
      if (n == 0) 
      { 
       break; // TODO: might not be correct. Was : Exit While 
      } 
      bytesRead += n; 
      bytesToRead -= n; 
     } 

     FileStream fstr = new FileStream("\\My Documents\\" + filename, FileMode.OpenOrCreate, FileAccess.Write); 
     fstr.Write(inBuf, 0, bytesRead); 
     dataStream.Close(); 
     fstr.Close(); 


    } 
    catch { } 
}