我正在开发一个项目,在该项目中,它需要通过VB6与三菱VB6数控系统(一个FTP服务器)进行通信。虽然我与它的初始通信是成功的,但当我试图上传或下载文件到它时,会发生以下错误:
Error 120003
200 Type set to I
200 Port command successful
500 Cannot Copy file/Directory. Permission Denied.我能够手动复制和粘贴文件夹中的文件。但是当我试图通过VB做同样的事情时,它就会显示出错误。
我的项目VB exe安装在与我的FTP服务器相同的PC上。
我的代码如下
Option Explicit
Private m_GettingDir As Boolean
Private Sub AddMessage(ByVal msg As String)
txtResults.Text = txtResults.Text & vbCrLf & msg
txtResults.SelStart = Len(txtResults.Text)
End Sub
Private Sub cmdUpload_Click()
Dim host_name As String
Dim CMD2 As String
Enabled = False
MousePointer = vbHourglass
txtResults.Text = "Working"
txtResults.SelStart = Len(txtResults.Text)
DoEvents
' You must set the URL before the user name and
' password. Otherwise the control cannot verify
' the user name and password and you get the error:
'
' Unable to connect to remote host
inetFTP.URL = "ftp://Administrator:CNC@NCExplorer:8080/(192,168,1,101)/"
inetFTP.UserName = "Administrator"
inetFTP.Password = "CNC"
' This is the path where Remote File is to be Copied
CMD2 = "ftp://Administrator:CNC@NCExplorer:8080/(192,168,1,101)/CNC%20MEMORY/PRG/USER/NEW_test.txt"
'Is the syntax of Remote file path Correct? I dont want to copy the file in Home directory
' Execution
inetFTP.Execute , "PUT C:\TEST.TXT CMD2"
' m_GettingDir = True
' inetFTP.Execute , "Dir"
End Sub
Private Sub inetFTP_StateChanged(ByVal State As Integer)
Select Case State
Case icError
AddMessage "Error: " & _
" " & inetFTP.ResponseCode & vbCrLf & _
" " & inetFTP.ResponseInfo
Case icNone
AddMessage "None"
Case icConnecting
AddMessage "Connecting"
Case icConnected
AddMessage "Connected"
Case icDisconnecting
AddMessage "Disconnecting"
Case icDisconnected
AddMessage "Disconnected"
Case icRequestSent
AddMessage "Request Sent"
Case icRequesting
AddMessage "Requesting"
Case icReceivingResponse
AddMessage "Receiving Response"
Case icRequestSent
AddMessage "Request Sent"
Case icResponseReceived
AddMessage "Response Received"
Case icResolvingHost
AddMessage "Resolving Host"
Case icHostResolved
AddMessage "Host Resolved"
Case icResponseCompleted
AddMessage inetFTP.ResponseInfo
If m_GettingDir Then
Dim txt As String
Dim chunk As Variant
m_GettingDir = False
'Get the first chunk.
chunk = inetFTP.GetChunk(1024, icString)
DoEvents
Do While Len(chunk) < 0
txt = txt & chunk
chunk = inetFTP.GetChunk(1024, icString)
DoEvents
Loop
' AddMessage "----------"
AddMessage txt
End If
Case Else
AddMessage "State = " & Format$(State)
End Select
Enabled = True
MousePointer = vbDefault
End Sub发布于 2016-07-25 21:44:27
你并没有给ftp一个机会去看最终的位置。从字面上看,这个位置是CMD2
尝试将目标字符串连接到命令
更改如下:
inetFTP.Execute , "PUT C:\TEST.TXT CMD2"到此
inetFTP.Execute , "PUT C:\TEST.TXT " & CMD2https://stackoverflow.com/questions/38570104
复制相似问题