none
Ayuda con la opción de subir archivos RRS feed

  • Pregunta

  • Que tal amigos resulta que tengo mi aplicación en maquina de desarrollo y no tengo problemas para subir los archivos, el problema es cuando la subo a una maquina  de mi red específicamente para la aplicación, aquí es donde cuando quiero subir un archivo me dice que no existe la ruta. como se muestra en el siguiente mensaje.

      <h2>404: archivo o directorio no encontrado.</h2>
      <h3>Puede que se haya quitado el recurso que est� buscando, que se le haya cambiado el nombre o que no est� disponible temporalmente.</h3>

    para lo cual utilizo el siguiente código.

     public ActionResult MigraCatalogo(HttpPostedFileBase FileUpload1)
            {
                Response oResponse = new Response();         
    
                var user = db.MtoUsuarios.Where(u => u.UserName == User.Identity.Name).FirstOrDefault();
                if (user == null)
                {
                    RedirectToAction("Index", "Home");
                }
                
                if (FileUpload1.ContentLength != 0)
                {
                    //string archivo = (DateTime.Now.ToString("yyyyMMddHHmmss") + "-" + FileUpload1.FileName).ToLower();
                    //FileUpload1.SaveAs(Server.MapPath("~/Content/Uploads/Catalogo/" + archivo));
    
                    string extension = Path.GetExtension(Request.Files["FileUpload1"].FileName).ToLower();
                    string connString = "";
    
                    string[] validFileTypes = { ".xls", ".xlsx", ".csv" };
    
                    var Folder = "~/Content/Uploads/Catalogo/";
                    HttpPostedFileBase file = Request.Files["FileUpload1"];
    
    
                    string path1 = string.Format("{0}/{1}", Server.MapPath(Folder), Request.Files["FileUpload1"].FileName);
    
    
                    if (!Directory.Exists(path1))
                    {
                        Directory.CreateDirectory(Server.MapPath(Folder));
                    }
                    if (validFileTypes.Contains(extension))
                    {
                        if (System.IO.File.Exists(path1))
                        {
                            System.IO.File.Delete(path1);
                        }
    
                        var UploadFile = FilesHelper.Uploadfile(file, Folder, Request.Files["FileUpload1"].FileName);
                        if (UploadFile)
                        {
                            if (extension == ".csv")
                            {
                                dt = Utilities.ConvertCSVtoDataTable(path1);
                                ViewBag.Data = dt;
    
    
                                oResponse.succeeded = false;
                                oResponse.Message = "Problemas con el archivo que intenta migrar";
                            }
                            //Connection String to Excel Workbook  
                            else if (extension.Trim() == ".xls")
                            {
                                connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path1 + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=2\"";
                                dt = Utilities.ConvertXSLXtoDataTable(path1, connString, "[CatalogoOperativo$]");
                                ViewBag.Data = dt;
                            }
                            else if (extension.Trim() == ".xlsx")
                            {
                                //connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path1 + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=2\"";
                                connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path1 + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=2\"";
                                dt = Utilities.ConvertXSLXtoDataTable(path1, connString, "[CatalogoOperativo$]");
                                ViewBag.Data = dt;
                            }
    
    
                            var connectionString = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
                            var connection = new SqlConnection(connectionString);
                            try
                            {
    
                                SqlCommand cmd = new SqlCommand("SP-MtoCatArticulo-MigraCatalogo", connection);
                                cmd.CommandType = CommandType.StoredProcedure;
                                cmd.Parameters.AddWithValue("@tblMatCatArticulo", dt);
    
                                connection.Open();
                                SqlDataAdapter da = new SqlDataAdapter();
                                da = new SqlDataAdapter(cmd);
                                dt = new DataTable();
                                da.Fill(dt);
                                cmd.ExecuteNonQuery();
    
                                connection.Close();
                                oResponse.succeeded = true;
                                oResponse.Message = "La Migracion de la informacion se realizon con Éxito";
                                return Json(oResponse, JsonRequestBehavior.AllowGet);
                            }
                            catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)
                            {
                                Exception raise = dbEx;
                                foreach (var validationErrors in dbEx.EntityValidationErrors)
                                {
                                    foreach (var validationError in validationErrors.ValidationErrors)
                                    {
                                        string message = string.Format("{0}:{1}",
                                            validationErrors.Entry.Entity.ToString(),
                                            validationError.ErrorMessage);
    
                                        raise = new InvalidOperationException(message, raise);
                                    }
                                }
                            }
    
                            catch (Exception ex)
                            {
                                oResponse.Message = ex.Message;
                                return Json(oResponse, JsonRequestBehavior.AllowGet);
                            }
    
                        }
                    }
                    else
                    {
                        oResponse.succeeded = false;
                        oResponse.Message = "Por favor suba archivos en .xls, .xlsx o .csv";
                        return Json(oResponse, JsonRequestBehavior.AllowGet);
    
                    }
    
                }
                else
                {
                    oResponse.succeeded = false;
                    oResponse.Message = "Por favor suba archivos en .xls, .xlsx o .csv";
                    return Json(oResponse, JsonRequestBehavior.AllowGet);
                }                        
               return Json(new { data = oResponse }, JsonRequestBehavior.AllowGet);            
            }

    ahora en el helper tengo el siguiente codigo.

    public static bool Uploadfile(HttpPostedFileBase File, string Folder, string Name)
            {
                if ((File == null) || string.IsNullOrEmpty(Folder) || string.IsNullOrEmpty(Name))
                {
                    return false;
                }
    
                try
                {
                    string path = string.Empty;
                    string pic = string.Empty;
    
                    if (File != null)
                    {                 
                        string archivo = Name.ToLower();
                       // string path = Path.Combine(Server.MapPath("~/uploads/"), fileName);
    
                        File.SaveAs(HttpContext.Current.Server.MapPath(Folder) + archivo);                 
                    }
                    return true;
                }
                catch
                {
                    return false;
                }
    
            }

    Ahora como les comento en local funciona de maravilla, la situación esta cuando la paso a otra maquina local ya configurada unicamente para atender a la aplicación, en IIS existe la carpeta como se muestra.

    Pero me sigue mandando el error de que no existe la ruta, el local no puedo depurar ya que no me muestra ningun error.

    podrian apoyarme para ver que estoy haciendo mal.


    Horacio Xochitemol Bautista

    miércoles, 4 de noviembre de 2020 18:57

Todas las respuestas

  • Hola Xochitemol, prueba esto:

    * Ve a IIS.

    * Selecciona tu aplicación web.

    * Selecciona 'Documento predeterminado' y verifica si Default.aspx está ahí o no.

    * Si no está allí, agrega una entrada.

    * Ahora intenta ejecutar tu sitio. Además, puedes habilitar 'Exploración de directorios' para tu aplicación y seleccionar la página que desees ejecutar.

    Espero que te sea de ayuda. Por favor no olvides marcar una respuesta si resolviste tu consulta (debajo de cada post hay una opción que dice “Marcar como Respuesta”). Quedo pendiente de cualquier actualización. Gracias por levantar tu consulta en los foros de msdn.

     

    Saludos cordiales

    Gabriel Castro

     ____________________________ 

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. 

    jueves, 5 de noviembre de 2020 0:26
    Moderador
  • Hola Xochitemol,

    ¿Alguna novedad sobre tu pregunta? ¿Han sido útiles las respuestas proporcionadas? Por favor no olvides marcar una respuesta si resolviste tu consulta (debajo de cada post hay una opción que dice "Marcar como respuesta").

     

    Saludos cordiales

    Gabriel Castro

     ____________________________ 

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. 

    lunes, 16 de noviembre de 2020 22:34
    Moderador