Beispiel #1
0
        private CResultAErreur GetFileFromFtp(CActionCopierLocalDansGed.CParametresCopierLocalDansGed parametre)
        {
            CResultAErreur result    = CResultAErreur.True;
            string         strExt    = "dat";
            int            nPosPoint = parametre.NomFichierLocal.LastIndexOf(".");

            if (nPosPoint >= 0)
            {
                strExt = parametre.NomFichierLocal.Substring(nPosPoint + 1);
            }
            m_fichierTemporaireFromFTP = new CFichierLocalTemporaire(strExt);
            m_fichierTemporaireFromFTP.CreateNewFichier();

            using (FileStream streamDest = new FileStream(
                       m_fichierTemporaireFromFTP.NomFichier,
                       FileMode.CreateNew,
                       FileAccess.Write))
            {
                try
                {
                    FtpWebRequest req = (FtpWebRequest)WebRequest.Create(parametre.NomFichierLocal);
                    req.Method      = WebRequestMethods.Ftp.DownloadFile;
                    req.Credentials = new NetworkCredential(parametre.User, parametre.Password);

                    FtpWebResponse response   = (FtpWebResponse)req.GetResponse();
                    Stream         respStream = response.GetResponseStream();
                    byte[]         buffer     = new byte[256];
                    int            nNbLus     = 0;
                    while ((nNbLus = respStream.Read(buffer, 0, 256)) != 0)
                    {
                        streamDest.Write(buffer, 0, nNbLus);
                    }
                    respStream.Close();
                    respStream.Dispose();
                    response.Close();
                    response.Dispose();
                }
                catch (Exception e)
                {
                    result.EmpileErreur(new CErreurException(e));
                }
                streamDest.Close();
            }
            return(result);
        }
Beispiel #2
0
        /// ///////////////////////////////////////////
        public override sc2i.common.CResultAErreur RunService(object parametre)
        {
            MyDispose();
            CResultAErreur result = CResultAErreur.True;

            CActionCopierLocalDansGed.CParametresCopierLocalDansGed paramCopie = parametre as CActionCopierLocalDansGed.CParametresCopierLocalDansGed;
            if (paramCopie == null)
            {
                result.EmpileErreur(I.T("Bad parameter value for service GetLocalFile|20121"));
                return(result);
            }
            if (paramCopie.NomFichierLocal.ToUpper().StartsWith("FTP://"))
            {
                //Si FTP récupère le fichier FTP et l'envoie dans un fichier local temporaire
                result = GetFileFromFtp(paramCopie);
                if (!result)
                {
                    return(result);
                }
                paramCopie.NomFichierLocal = m_fichierTemporaireFromFTP.NomFichier;
            }

            string strNomFichier = paramCopie.NomFichierLocal;

            if (!File.Exists(strNomFichier))
            {
                result.EmpileErreur(I.T("File @1 doesn't exists|20122", strNomFichier));
                return(result);
            }
            m_streamFichier = new FileStream(strNomFichier, FileMode.Open, FileAccess.Read);
            CSourceDocumentStream source = new CSourceDocumentStream(
                m_streamFichier, Path.GetExtension(strNomFichier));

            result.Data = source;
            return(result);
        }