Пример #1
0
        public ActionResult DownloadFtpSaida(string nomeArquivoDownload)
        {
            var usuarioCliente = CarregaDadosUsuarioCliente();

            ControleArquivoModel model = new ControleArquivoModel
            {
                UsuarioCliente = usuarioCliente
            };

            var caminhoSaida = ConfigurationManager.AppSettings["FtpUrl"] +
                               usuarioCliente.ClienteEmpresa.NomePastaFtp + "/" +
                               ConfigurationManager.AppSettings["FtpSaida"] + "/" + nomeArquivoDownload;

            try
            {
                FtpWebRequest request = (FtpWebRequest)FtpWebRequest.Create(new Uri(caminhoSaida));
                request.Method = WebRequestMethods.Ftp.DownloadFile;

                request.Credentials = CreateCredential();
                request.UsePassive  = true;
                request.UseBinary   = true;
                request.EnableSsl   = false;

                FtpWebResponse response = (FtpWebResponse)request.GetResponse();
                using (MemoryStream stream = new MemoryStream())
                {
                    response.GetResponseStream().CopyTo(stream);
                    Response.AddHeader("content-disposition", "attachment;filename=" + nomeArquivoDownload);
                    Response.Cache.SetCacheability(HttpCacheability.NoCache);
                    Response.BinaryWrite(stream.ToArray());
                    Response.End();
                }
            }
            catch (WebException ex)
            {
                throw new Exception((ex.Response as FtpWebResponse).StatusDescription);
            }

            return(RedirectToAction("PesquisaFtp"));
        }
Пример #2
0
        public ActionResult PesquisaFtp(HttpPostedFileBase file)
        {
            var usuarioCliente = CarregaDadosUsuarioCliente();

            ControleArquivoModel model = new ControleArquivoModel
            {
                UsuarioCliente = usuarioCliente
            };

            var caminhoEntrada = ConfigurationManager.AppSettings["FtpUrl"] +
                                 usuarioCliente.ClienteEmpresa.NomePastaFtp + "/" +
                                 ConfigurationManager.AppSettings["FtpEntrada"] + "/";

            model.NomeArquivoEntrada = file.FileName;
            model.Arquivo            = file;

            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            bool encontrou = false;

            string[] extensoes           = file.FileName.Split('.');
            string[] extensoesPermitidas = new string[] { "TXT", "CSV", "XLS", "XLSX" };  //txt , csv, xls, xlsx

            for (int i = 0; i < extensoesPermitidas.Length; i++)
            {
                if (extensoesPermitidas[i] == extensoes[(extensoes.Length - 1)].ToUpper())
                {
                    encontrou = true;
                }
            }

            try
            {
                if (encontrou)
                {
                    if (file != null && file.ContentLength > 0)
                    {
                        // extract only the filename
                        var fileName = Path.GetFileName(file.FileName);
                        // store the file inside ~/App_Data/uploads folder
                        var path = Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName);

                        var request = CreateFtpRequest(caminhoEntrada + file.FileName);

                        using (var arquivo = request.GetRequestStream())
                            file.InputStream.CopyTo(arquivo);

                        var result = (FtpWebResponse)request.GetResponse();

                        if (result.StatusCode == FtpStatusCode.CommandOK || result.StatusCode == FtpStatusCode.ClosingData || result.StatusCode == FtpStatusCode.FileActionOK)
                        {
                            PesquisaFtp();
                            TempData["msg"] = "<script>toastr['success']('Arquivo enviado com sucesso');</script>";

                            return(View(model));
                        }
                        else
                        {
                            return(RedirectToAction("ListarFtpEntrada"));
                        }
                    }
                    else
                    {
                        PesquisaFtp();

                        TempData["msg"] = "<script>toastr['error']('Arquivo não localizado');</script>";

                        return(View());
                    }
                }
                else
                {
                    PesquisaFtp();

                    TempData["msg"] = "<script>toastr['error']('Arquivo não permitido');</script>";

                    return(View());
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Пример #3
0
        public ActionResult PesquisaFtp()
        {
            var usuarioCliente = CarregaDadosUsuarioCliente();

            ControleArquivoModel model = new ControleArquivoModel
            {
                UsuarioCliente = usuarioCliente
            };

            if (usuarioCliente.Id != null)
            {
                var existePastaFtp = CreateFTPDirectory(ConfigurationManager.AppSettings["FtpUrl"] +
                                                        usuarioCliente.ClienteEmpresa.NomePastaFtp);

                if (existePastaFtp)
                {
                    #region FTP Entrada

                    var caminhoEntrada = ConfigurationManager.AppSettings["FtpUrl"] +
                                         usuarioCliente.ClienteEmpresa.NomePastaFtp + "/" +
                                         ConfigurationManager.AppSettings["FtpEntrada"] + "/";

                    var existePastaEntrada = CreateFTPDirectory(caminhoEntrada);

                    if (existePastaEntrada)
                    {
                        var uri = new Uri(caminhoEntrada);
                        var ftp = (FtpWebRequest)WebRequest.Create(uri);
                        ftp.Method = System.Net.WebRequestMethods.Ftp.ListDirectory;

                        ftp.Credentials = CreateCredential();

                        FtpWebResponse response = (FtpWebResponse)ftp.GetResponse();

                        Stream       responseStream = response.GetResponseStream();
                        StreamReader reader         = new StreamReader(responseStream);

                        List <string> listaArquivoEntradaFtp = new List <string>();

                        string[] lines = reader.ReadToEnd().Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);

                        foreach (string item in lines)
                        {
                            listaArquivoEntradaFtp.Add(item);
                        }

                        ViewBag.ListaArquivoEntradaFtp = listaArquivoEntradaFtp;
                    }

                    #endregion

                    #region FTP Saida

                    var caminhoSaida = ConfigurationManager.AppSettings["FtpUrl"] +
                                       usuarioCliente.ClienteEmpresa.NomePastaFtp + "/" +
                                       ConfigurationManager.AppSettings["FtpSaida"] + "/";

                    var existePastaSaida = CreateFTPDirectory(caminhoSaida);

                    if (existePastaSaida)
                    {
                        var uri = new Uri(caminhoSaida);
                        var ftp = (FtpWebRequest)WebRequest.Create(uri);
                        ftp.Method = System.Net.WebRequestMethods.Ftp.ListDirectory;

                        ftp.Credentials = CreateCredential();

                        var response = (FtpWebResponse)ftp.GetResponse();

                        var responseStream = response.GetResponseStream();
                        var reader         = new StreamReader(responseStream);

                        List <string> listaArquivoSaidaFtp = new List <string>();

                        var lines = reader.ReadToEnd().Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);

                        foreach (string item in lines)
                        {
                            listaArquivoSaidaFtp.Add(item);
                        }

                        ViewBag.ListaArquivoSaidaFtp = listaArquivoSaidaFtp;
                    }

                    #endregion
                }
            }

            return(View(model));
        }