2011-01-16 2 views
0

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

<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?

+1

Я обыскал Googles о перемещать файлы в целом с FTP (http://www.google.com/search?q=ftp%20move%20files%20on%20remote%20server), и он выглядит как переименование, может выполнять задание на перемещение файлов. – orangepips

+0

попробовал, прежде чем я разместил вопрос. необходимо сохранить исходные файлы. – KobbyPemson

+3

Протокол FTP не поддерживает удаленные копии. Ваш способ загрузки/выгрузки примерно так же хорош, как вы можете получить по FTP. –

ответ

0

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

0

С CFFTP вы можете сделать ПЕРЕИМЕНОВАТЬ (проверьте docs), который должен решить вашу проблему

+0

Это было рассмотрено за 12 часов до вашего ответа в комментариях. – orangepips

0

код, чтобы показать каталоги файлов:

<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" /> 
Смежные вопросы