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")); }
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; } }
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)); }