现写的代码在下载完之后,碰到有些服务器下载来的文件会是乱码,查了一下,用命令行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 = &H80InternetOpen("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) 下载
我原来用的是这几个实现下载的。这里可以改进实现我上述的功能吗?
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 = &H80InternetOpen("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) 下载
解决方案 »
- 如何将VB制作成安装程序时有中英文版?
- 如何用 winsock post 请求,并接受回应数据
- 如何实现同时按下"alt,shift和f5"显示一个对话框"成功"???(注意是三个按键)
- 在一个usercontrol 如过想将usercontrol作为参数发送出去应该使用 usercontrol UCName(控件名) Me 都不行啊
- 如何计算"C:\ken\新建文件夹\vb"的长度?
- 一个说大不大,说小不小的问题!
- 如何将程序中用的ACCESS数据库换成单机版的SQL SERVER
- 用vb开发网上考试中,服务器与客户端数据库互访问题!!
- 高手请进,新手高分请教一个简单算法,请指点,一定给分
- 如下的演示光盘要实现的功能用什么软件开发比较好一个新手完成要多长时间?
- 模仿蓝屏 源代码
- vb引用mssoaptoolkit30 访问webserver 报错,跪求解决办法。。。
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 SubPrivate Sub Command1_Click()
Command1.Enabled = False
ReadNewFile ("aFile.ext")
Command1.Enabled = True
End SubPrivate 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