Método: para descargar el archivo FTP desde Caché de InterSystems: Si tienes cualquier consulta, deja un mensaje por favor:
{
/*---------------------------------------------------------------------------------------------------------------------------
descargar el archivo según los requirimientos: FTP
Método: Resuable
creado por: Sanjib Raj Pandey el 30/03/2018
= 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) Q "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 w $$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
{
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"
}