Artículo
· 25 sep, 2020 Lectura de 4 min

Opciones de descarga de archivos por FTP (todos los archivos, número de archivos): copiar archivo o mover archivo

Método: para descargar el archivo FTP desde Caché de InterSystems: Si tienes cualquier consulta, deja un mensaje por favor:

ClassMethod FTPDownload(myFTP = "", myUserName = "", myPassword = "", sFileLocation = "", dLocation = "", noOfdownloadFile = 1, sourceFileDel = 0)
{

 /*---------------------------------------------------------------------------------------------------------------------------
descargar el archivo según los requirimientos: FTP

Método: Resuable 

creado por: Sanjib Raj Pandey el 30/03/2018

 downLoadFile = Número de archivos o todos los archivos  ...... que quieras descargar; EL VALOR PREDETERMINADO ES 1
   = indica un valor, por ej. 1,3,7,100 archivos
   = escribe "*"  para descargar todos los archivos.
 
  SourceFileDel = Si quieres eliminar los arhivos del directorio de origen después de la descarga..... 
                  entonces configura el valor 1  -- ;   el valor predeterminado es:  0 
                  1= True (elimina el archivo de la carpeta de origen después de la descarga),  0 = False (solo copiar)
 
  sFileLocation = Ubicación de origen del archivo (carpeta)
  dLocation = Carpeta de destino

Ejemplo:
  La siguiente línea ..... mueve todos los archivos desde el origen a la ubicación de destino
  w ##class(CW.COMMON).FTPDownload("Dirección IP","Usuario","Password","Ruta origen","Ruta destino,"*",1)
 
 La siguiente línea...... copia 200 archivos desde la carpeta de origen a la de destino
w ##class(CW.COMMON).FTPDownload("Dirección IP ","Usuario","Password","Ruta origen","Ruta destino",200,0)

  -------------------------------------------------------------------------------------------------------------------------
 */
 // puedes configurar el control de errores a, por ejemplo, Try and Catch 
 
 Set (count,fileNo,key,messge,fileStream,myFileName,myFile,fSave,eMessage,eSubject)=""
 Set fIp= myFTP 
 Set fUserName= myUserName 
 set fPassword=myPassword 
 set sFileLocaion=sFileLocation 
 set dLocation=dLocation 
 Set downloadFile=noOfdownloadFile 
 Set sourceFileDel=sourceFileDel
 
 If $Length(fIp)=0||($L(fUserName)=0)||($L(fPassword)=0) || ($L(downloadFile)=0) "Credenciales inválidas o el archivo de descarga es 0.!, verifica la IP, Usuario, password o Ubicación o destino del FTP!"      
 Set myFtp=##class(%Net.FtpSession).%New()
 Set eMessage="La conexión FTP falló, por favor comprueba "_fIp_" o el usuario, password.!"
 Set eSubject ="Mensaje de advertencia de FTP."  
 Set myFtp.Timeout = 60
 If 'myFtp.Connect(fIp,fUserName,fPassword) Quit  $$EVEMAIL^CW.COMMON(eSubject,eMessage)
 Do myFtp.SetDirectory(sFileLocaion)
 If 'myFtp.NameList(" ",.x) Quit "Fichero(s) no encontrados "
 Set fileStream = ##class(%Stream.FileBinary).%New()
 Set message ="copiado"
 Set myFileName=""
 Set fileNo=0
 Set Key=""
 If (downloadFile = "*")
 {
   While (x.GetNext(.Key))'=""
 {
       Do StartCopy
 }
Do myFtp.Logout()
Quit fileNo_" Fichero(S) se han "_message_"con éxito !"   
 }
 
 If (downloadFile >0)
 {
       Set count=1
        While ((count <= downloadFile) && (count<=x.Count()))
  {
   do StartCopy
  Set count=count +1
  }
  Do myFtp.Logout()
  Quit fileNo_" Fichero(S) se han "_message_"con éxito !" 
 }
  
StartCopy
  Set myFileName= x.GetNext(.fileNo)
   Do myFtp.Binary()
  Do myFtp.Retrieve(myFileName,.fileStream)
  Set myFile= ##class(%Library.FileBinaryStream).%New()
   Set myFile.Filename=dLocation_myFileName
  Do myFile.CopyFrom(fileStream)
  Set fSave=myFile.%Save()
   IF ((sourceFileDel=1) && (fSave = 1))
  {
     Do myFtp.Delete(myFileName)
      Set message="Movidos"
}

Comentarios (0)1
Inicie sesión o regístrese para continuar