現寫的代碼在下載完之后,碰到有些服務器下載來的檔案會是亂碼,查了一下,用命令列bin模式下載,不會改變其原來編碼,不會造成這種現象。 我想象CMD命令里那樣,連接成功之后,下個命令bin.就轉換成這個binmary模式了,這個api里有沒有這樣的。
我原來用的是這幾個實作下載的。這里可以改進實作我上述的功能嗎?
internetOpen
InternetConnect
FtpGetFile
Private Const FTP_TRANSFER_TYPE_UNKNOWN = &H0
Private Const FTP_TRANSFER_TYPE_ASCII = &H1
Private Const FTP_TRANSFER_TYPE_BINARY = &H2
Private Const INTERNET_FLAG_RELOAD = &H80000000
Private Const FILE_ATTRIBUTE_NORMAL = &H80
InternetOpen("vb wininet", 1, vbNullString, vbNullString, 0)
InternetConnect(mFTPOpen, mAddress, mPoint, mUser, mPassWord, 1, 0, 0) 連接
FtpGetFile(mFTPConn, RomeFileName, LocalPath, False, FILE_ATTRIBUTE_NORMAL, FTP_TRANSFER_TYPE_BINARY Or INTERNET_FLAG_RELOAD, 0) 下載
uj5u.com熱心網友回復:
沒有看懂,幫頂。vb都快忘光了uj5u.com熱心網友回復:
僅供參考:VERSION 5.00
Object = "{48E59290-9880-11CF-9754-00AA00C00908}#1.0#0"; "MSINET.OCX"
Begin VB.Form Form1
BorderStyle = 1 'Fixed Single
ClientHeight = 3060
ClientLeft = 45
ClientTop = 330
ClientWidth = 4035
LinkTopic = "Form1"
MaxButton = 0 'False
MinButton = 0 'False
ScaleHeight = 3060
ScaleWidth = 4035
StartUpPosition = 3 '視窗預設
Begin VB.CommandButton Command1
Caption = "下載"
Height = 495
Left = 1440
TabIndex = 0
Top = 1320
Width = 1215
End
Begin InetCtlsObjects.Inet Inet1
Left = -15
Top = -15
_ExtentX = 1005
_ExtentY = 1005
_Version = 393216
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
Dim ExeStr As String
Dim Done As Boolean
Private Sub cmd(cmdstr As String)
Do
If Inet1.StillExecuting = False Then Exit Do
Loop
ExeStr = cmdstr
Done = False
Debug.Print ExeStr; "="
Inet1.Execute , ExeStr
Do
DoEvents
If Done Then Exit Do
Loop
End Sub
Public Sub ReadNewFile(File As String)
Inet1.URL = "ftp://123.123.123.123"
Inet1.UserName = "username"
Inet1.Password = "password"
'cmd "PWD"
'cmd "CD ../files"
'cmd "DIR"
'cmd "GET " + File + App.Path + "\" + File
cmd "GET ../files/" + File + App.Path + "\" + File
cmd "QUIT"
End Sub
Private Sub Command1_Click()
Command1.Enabled = False
ReadNewFile ("aFile.ext")
Command1.Enabled = True
End Sub
Private Sub Inet1_StateChanged(ByVal State As Integer)
Dim intFile As Integer
Dim vtData() As Byte
Dim str As String
'On Error GoTo ISCerr
Debug.Print "State="; State,
Select Case State
Case 0
Debug.Print "icNone"
Case 1
Debug.Print "icHostResolvingHost"
Case 2
Debug.Print "icHostResolved"
Case 3
Debug.Print "icConnecting"
Case 4
Debug.Print "icConnected"
Case 5
Debug.Print "icRequesting"
Case 6
Debug.Print "icRequestSent"
Case 7
Debug.Print "icReceivingResponse"
Case 8
Debug.Print "icResponseReceived"
If Left(ExeStr, 2) = "CD" Then Done = True
Case 9
Debug.Print "icDisconnecting"
Case 10
Debug.Print "icDisconnected"
Done = True
Case 11
Debug.Print "icError of [" + ExeStr + "]="; Inet1.ResponseInfo
Done = True
Case 12
Debug.Print "icResponseCompleted----------------"
Do
str = Inet1.GetChunk(1024, icString)
If LenB(str) = 0 Then Exit Do
Debug.Print str
Loop
Done = True
End Select
Exit Sub
ISCerr:
Resume Next
End Sub
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/66993.html
標籤:API
上一篇:用VB做的EXE運行時需要讀取一個文本檔案,如何對TXT進行加密?
下一篇:求助MSDN案例
