Ошибка загрузки файлов FTP в VB6

Я разрабатываю проект, в котором требуется общаться с ЧПУ Mitsubishi M70 (FTP-сервер) через VB6. Хотя мое первоначальное общение с ним прошло успешно, когда я пытаюсь загрузить или загрузить на него файл, возникает следующая ошибка:

Error 120003

200 Type set to I
200 Port command successful
500 Cannot Copy file/Directory. Permission Denied.

Я могу КОПИРОВАТЬ и вставлять файлы в папку вручную. Но когда я пытаюсь сделать то же самое через VB, он показывает ошибку.

MY Project VB exe установлен на том же компьютере, что и мой FTP-сервер.

Мой код выглядит следующим образом

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

person sst    schedule 25.07.2016    source источник


Ответы (1)


Вы не даете ftp-команде шанс увидеть окончательное местоположение. Он принимает местоположение буквально как CMD2

Попробуйте соединить строку назначения с командой

Изменить это:

inetFTP.Execute , "PUT C:\TEST.TXT CMD2"

К этому

inetFTP.Execute , "PUT C:\TEST.TXT " & CMD2
person dbmitch    schedule 25.07.2016