找回密碼 或 安全提問
 註冊
|註冊|登錄

伊莉討論區

搜索
請尊重及感激所有版主付出和奉獻尊貴會員無限下載附件尊貴會員無限看帖不用回覆
偷拍259luxu柯南中文無碼 meg無碼 ge
xv2屍鬼jerez's レベッカspecialzoffice 帶空間穿

休閒聊天興趣交流學術文化旅遊交流飲食交流家庭事務PC GAMETV GAME
熱門線上其他線上感情感性寵物交流家族門派動漫交流貼圖分享BL/GL
音樂世界影視娛樂女性頻道潮流資訊BT下載區GB下載區下載分享短片
電腦資訊數碼產品手機交流交易廣場網站事務長篇小說體育運動時事經濟
上班一族博彩娛樂

[繁/無修正]魔都精兵

[繁]藥師少女的獨語21

[超清中字]灌籃高手

[繁]葬送的芙莉蓮26-

[繁]秒殺外掛太強了,

[簡]為了在異世界也能
C & C++ 語言C# 語言Visual Basic 語言PHP 語言JAVA 語言
查看: 8570|回復: 1

[分享] 用HttpWebRequest 下載檔案[複製鏈接]

  專 家(12000/24000)

偶素程式設計下的產物「浻」

Rank: 5Rank: 5Rank: 5Rank: 5Rank: 5

帖子
1412
積分
17880 點
潛水值
38197 米
發表於 2014-2-1 08:48 PM|顯示全部樓層
本帖最後由 darkjack 於 2014-2-1 08:48 PM 編輯

這是我在網路上搜尋到的 一段程式碼..我修改了一些
請自行增加 Textbox 與 Button 各一個
  1.     Sub Loading(ByRef MyWeb As WebBrowser)
  2.         Do Until WebBrowserRead.ReadyState = WebBrowserReadyState.Complete
  3.             Application.DoEvents()

  4.         Loop
  5.     End Sub


  6.   Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
  7.         Dim url As Uri = New Uri("https://www.google.com.tw/search?safe=off&hl=zh-TW&site=imghp&tbm=isch&source=hp&q=" & TextBox1.Text)

  8.         Dim objWebClient As New WebClient
  9.         Dim temp As Integer
  10.         Dim DataLinkStr(1), DataLinkStr2(1) As String


  11.         Dim GetStrAllLen, Str1, Str2 As Integer


  12.         '載入網頁
  13.         WebBrowserRead.Navigate(url)

  14.         Loading(WebBrowserRead)

  15.         For Each [HtmlElement] As HtmlElement In WebBrowserRead.Document.All
  16.             If [HtmlElement].TagName = "A" And [HtmlElement].GetAttribute("href") <> Nothing Then

  17.                 DataLinkStr = Split([HtmlElement].OuterHtml, "imgurl=")
  18.                 If DataLinkStr.Length > 1 Then

  19.                     DataLinkStr2 = Split(DataLinkStr(1), "&") '分割

  20.                     RichTextBox1.Text &= DataLinkStr2(0) & vbCrLf

  21.                     Str1 = InStrRev(DataLinkStr2(0), "/")  '取得 某字串位置
  22.                     Str1 = Str1 + 1 '往後推一字元

  23.                     GetStrAllLen = DataLinkStr2(0).Length '取得總字數(包涵http://)

  24.                     Str2 = GetStrAllLen - Str1

  25.                     If Strings.Right(DataLinkStr2(0), 4) = ".jpg" Or Strings.Right(DataLinkStr2(0), 4) = ".png" Then

  26.                         ListBox1.Items.Add(Strings.Mid(DataLinkStr2(0), Str1, Str2 + 1)) '取出要存的檔名
  27.                         Try
  28.                             HttpWebDownload(DataLinkStr2(0))
  29.                             Download_Count += 1
  30.                         Catch ex As WebException

  31.                         End Try

  32.                     Else
  33.                         Dim str3split() As String
  34.                         Dim str3 As String
  35.                         str3split = Split(DataLinkStr2(0), ".jpg")
  36.                         str3 = str3split(0) & ".jpg"

  37.                         temp += 1
  38.                     End If
  39.                     'objWebClient.DownloadFileAsync(New Uri(DataLinkStr2(0)), "G:\test\1\" & Strings.Mid(DataLinkStr2(0), Str1, Str2 + 1))
  40.                 End If
  41.             End If
  42.         Next

  43.     End Sub


  44.     Private Download_Count As Integer
  45.     Private Download_C_temp As Integer

  46.     Private Function HttpWebDownload(ByVal InputUrl As String)
  47.         Dim bytes_ As Integer = 0
  48.         Dim MyResponse As HttpWebResponse
  49.         Dim MyRequest As HttpWebRequest
  50.         Dim RemoteStream As Stream
  51.         Dim MyFilewStream As Stream

  52.         Dim TimeStart As DateTime = Now
  53.         Dim TS As TimeSpan

  54.         MyRequest = HttpWebRequest.Create(InputUrl)
  55.         If MyRequest IsNot Nothing Then
  56.             'MyResponse.GetResponseStream()
  57.             MyRequest.Timeout = (5 * 1000)
  58.             MyResponse = MyRequest.GetResponse
  59.             If MyResponse IsNot Nothing Then
  60.                 '判斷網頁狀態
  61.                 If MyResponse.StatusCode = HttpStatusCode.OK Then


  62.                     RemoteStream = MyResponse.GetResponseStream

  63.                     MyFilewStream = File.Create("G:\temp\1\" & Download_Count & ".jpg") '檔名

  64.                     Dim buffer(1024) As Byte
  65.                     Dim bytesRead As Integer

  66.                     TimeStart = Now

  67.                     Do
  68.                         bytesRead = RemoteStream.Read(buffer, 0, buffer.Length)

  69.                         MyFilewStream.Write(buffer, 0, bytesRead)

  70.                         bytes_ += bytesRead

  71.                         Application.DoEvents()
  72.                         '判斷執行時間
  73.                         TS = Now.Subtract(TimeStart)
  74.                         Console.WriteLine(TS)
  75.                         If TS.TotalSeconds > 7 Then
  76.                             Exit Do
  77.                         End If
  78.                     Loop While bytesRead > 0
  79.                 End If
  80.             End If
  81.         End If

  82.         If MyResponse IsNot Nothing Then MyResponse.Close()
  83.         If RemoteStream IsNot Nothing Then RemoteStream.Close()
  84.         If MyFilewStream IsNot Nothing Then MyFilewStream.Close()

  85.         Return bytes_

  86.     End Function
複製代碼
...
瀏覽完整內容,請先 註冊登入會員
本人 都是寫 vb.net 如果看到本人的原創 請自備 .Net FrameWork 3.5
如果你忘記伊莉的密碼,請在登入時按右邊出現的 '找回密碼'。輸入相關資料後送出,系統就會把密碼寄到你的E-Mail。

使用道具檢舉

帖子
46
積分
28 點
潛水值
15047 米
發表於 2020-4-5 11:36 PM|顯示全部樓層
如果你忘記伊莉的密碼,請在登入時按右邊出現的 '找回密碼'。輸入相關資料後送出,系統就會把密碼寄到你的E-Mail。
謝謝大大的分享..大大辛苦了
如果發覺自己無法使用一些功能或出現問題,請按重新整理一次,並待所有網頁內容完全載入後5秒才進行操作。

使用道具檢舉

您需要登錄後才可以回帖 登錄 | 註冊

Powered by Discuz!

© Comsenz Inc.

重要聲明:本討論區是以即時上載留言的方式運作,對所有留言的真實性、完整性及立場等,不負任何法律責任。而一切留言之言論只代表留言者個人意見,並非本網站之立場,用戶不應信賴內容,並應自行判斷內容之真實性。於有關情形下,用戶應尋求專業意見(如涉及醫療、法律或投資等問題)。 由於本討論區受到「即時上載留言」運作方式所規限,故不能完全監察所有留言,若讀者發現有留言出現問題,請聯絡我們。有權刪除任何留言及拒絕任何人士上載留言,同時亦有不刪除留言的權利。切勿上傳和撰寫 侵犯版權(未經授權)、粗言穢語、誹謗、渲染色情暴力或人身攻擊的言論,敬請自律。本網站保留一切法律權利。
回頂部