2015年2月24日 星期二

asp下載遠端檔案的程式碼







<%
'將圖片欄位讀出,並存入 strUrl 變數中
Dim strUrl

Do While not RS.EOF

strUrl = strUrl & RS("图片")

RS.MoveNext

Loop

'將 strUrl 折解,並存入 arrUrl 陣列中
Dim arrUrl

arrUrl = Split(strUrl, ";")

'1、檢查遠端檔案是否存在,若不存在則警告訊息,但不影響程式進行
'2、檢查本地有否對應目錄,若不存在則建立目錄
'3、將遠端檔案下載到本地
Dim winPath1, winPath2
Dim arrPath
Dim FileName
Dim i, j
Dim Total
Dim ErrText

winPath1 = "E:\Temp\PULADA\"  '此目錄必須自己手動建立

For i = LBound(arrUrl) to UBound(arrUrl) - 1

'將 arrUrl(i) 拆解為另一陣列 arrPath,以便取得完整檔名
arrPath = Split(Replace(arrUrl(i), "http://" , ""), "/")

'取得完整檔名
FileName = arrPath(UBound(arrPath))

'1、檢查遠端檔案是否存在,若不存在則警告訊息,但不影響程式進行
Set XMLHTTP = Server.Createobject("MSXML2.ServerXMLHTTP.5.0")

XMLHTTP.Open "GET", arrUrl(i), false
XMLHTTP.Send()

'判斷遠端檔案是否存在,200 代表存在,404 代表不存在
If XMLHTTP.Status <> 200 Then

Response.Write "<font color=FF0000>第 " & i + 1 & " 筆:失敗" & "<br>"

'記錄錯誤訊息,然後在程式執行完後顯示
ErrText = ErrText & arrUrl(i) & "<br>"

Else

RemoteFile = XMLHTTP.ResponseBody

'2、檢查本地有否對應目錄,若不存在則建立目錄
Set FSO = Server.CreateObject("Scripting.FileSystemObject")

For j = LBound(arrPath) to UBound(arrPath) - 1

winPath2 = winPath2 & arrPath(j) & "\"

'判斷目的目錄是否存在,若不存在則建立
If not FSO.FolderExists(winPath1 & winPath2) Then
FSO.CreateFolder(winPath1 & winPath2)
End If

Next

Set FSO = Nothing

'3、將遠端檔案下載到本地
Set objAdostream = Server.Createobject("ADODB.Stream")

objAdostream.Open()
objAdostream.Type = 1
objAdostream.Write(RemoteFile)
objAdostream.SaveToFile(winPath1 & winPath2 & FileName), 2  '2 代表不詢問,直接覆蓋
objAdostream.SetEOS

Set objAdostream = Nothing

Response.Write "<font color=0000FF>第 " & i + 1 & " 筆:成功" & "<br>"

'記錄成功的筆數
Total = Total + 1

'winPath 必須清除內容,不然會出現建立目錄時產生無限迴圈
winPath2 = ""

End If

Response.Flush
Response.Clear

Next

Response.Write "<br><br>"
Response.Write "<font color=0000FF>總相片數應為:</font>" & UBound(arrUrl, 1) & "<br>"
Response.Write "<font color=0000FF>實際下載數為:</font>" & Total & "<br>"
Response.Write "<font color=0000FF>未下載的連結:</font>" & "<br>" & ErrText & "<br>"

%>




資料來源:
如何用 asp 下載網址有中文字的遠端檔案
http://www.blueshop.com.tw/board/FUM200410061525290EW/BRD20140715120104M6P.html



本站其他相關資料 : 
抓取遠端網頁錯誤代碼404,檢查遠端檔案是否存在
http://gdlion.blogspot.tw/2015/02/httpwebrequest404.html


沒有留言:

張貼留言