cfftp: копировать и перемещать файл удаленно? - PullRequest
0 голосов
/ 16 января 2011

Мне нужно скопировать файлы из одной папки в другую на том же сервере sftp.Мой код в настоящее время копирует файлы локально и перезагружает их.

<cfftp  
  action  = "open"
  username = "#APPLICATION.intxml.SFTPUSERNAME#"
  password = "#APPLICATION.intxml.SFTPPASSWORD#"
  connection = "sftpcon"
  server  = "#APPLICATION.intxml.SFTPADDRESS#"
  port   = "#APPLICATION.intxml.SFTPPORT#"
  timeout  = "#APPLICATION.pageTimeout#"
  secure  = "#sftp#"/>   

 <cfif cfftp.succeeded>

  <cfftp action = "LISTDIR" stopOnError = "No" name = "ListFiles" directory = "/#sfolder#" connection = "sftpcon"/>


     <cfloop query=getFiles>
      <cfftp  action    = "GETFILE"
        stopOnError  = "Yes"
        name    = "theFile"
        transferMode  = "binary" 
        timeout   = 3600
        retrycount  = 10
        remoteFile  = "#sfolder##name#"
        localFile  = "#dfolder#/#name#"
        failIfExists = "no"
        connection   = "sftpcon">

      <cfftp  action    = "PUTFILE"
        stopOnError  = "Yes"
        name    = "theFile"
        transferMode  = "binary" 
        timeout   = 3600
        retrycount  = 10
        localfile  = "#sfolder##name#"
        remoteFile  = "#dfolder#/#name#"
        failIfExists = "no"
        connection   = "sftpcon">

     </cfloop>

    </cfif>

 <cfftp action = "close"
      connection = "sftpcon"
      stopOnError = "Yes">

Есть ли лучший способ сделать это с Coldfusion?

Ответы [ 3 ]

0 голосов
/ 19 января 2011

Обнаружено, что протокол ftp не позволяет удаленно копировать файл в другую папку и сохранять оригинал. Это препятствует холодному слиянию предоставить решение. Перемещение файлов с другой стороны может быть сделано с переименованием. Смотрите другой ответ и комментарии на оригинальный вопрос.

0 голосов
/ 23 мая 2013

Код для отображения каталогов файлов:

    <cfftp
        username=   "username"
        password=   "password"
        port=       "22"
        server=     "hostofyousystem"
        secure=     "yes"
        name=       "ftpconnection"
        action=     "listdir"
        directory=  "/" />

    <cfdump var="#ftpconnection#" />

    <cfoutput query="ftpconnection">
        #path#<br/>
    </cfoutput>

Код для получения файла и сохранения его в нашей системе, если файл существует, затем замените:

    <cfftp
        username=    "username"
        password=    "password"
        port=        "22"
        server=      "hostofyousystem"
        secure=      "yes"
        action=      "getFile"
        remotefile=  "/myfile.csv"
        localfile=   "D:/web/files/Data/thisfile.csv"
        failIfExists="no" />
0 голосов
/ 16 января 2011

С CFFTP вы можете сделать RENAME (отметьте docs ), который должен решить вашу проблему

...