none
Problema al guardar uno de los varios controles fileupload en blanco RRS feed

  • Pregunta

  • En mi formulario tengo varios fileupload que los creo en un repeater ... si se cargan los 2 fileupload con archivos funciona perfecto.. pero si solo quiero actualizar el primero o el segundo ... se carga solo el fileupload que tiene el archivo asignado y el otro fileupload se inserta como un archivo en blanco... Como podria validar que solo se inserte el fileupload cargado con un archivo sin que los otros fileupload al insertarse generan un archivo en blanco como en la imagen que pongo. Incluso tuve que eliminar la linea filemen.Hasfile... para no tener problemas

      Protected Sub btnUpload_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnupload.Click
            Dim fechaini As Date = DateTime.Parse(lblini.Text)
            Dim fechafin As Date = DateTime.Parse(lblfin.Text)
            Dim cmeses2 = MonthDifference(fechafin, fechaini)
            For i As Integer = 1 To cmeses2
               For Each item As RepeaterItem In rpt.Items

                    Dim filemen As FileUpload = DirectCast(item.FindControl("FileUpload1"), FileUpload)
                    'If filemen.HasFile Then
                    Dim Extension As String
                    Extension = System.IO.Path.GetExtension(filemen.FileName)

                    If Extension.ToLower <> ".gif" And Extension.ToLower <> ".png" And Extension.ToLower <> ".jpg" And Extension.ToLower <> ".jpeg" And Extension.ToLower <> ".pdf" And filemen.FileName <> "" Then
                        ScriptManager.RegisterStartupScript(Me, Me.GetType(), "popup", "alert('Formato de archivo invalido, suba archivos con formato PDF o imagen')", True)

                    Else
                        Dim FileSize As Integer
                        FileSize = filemen.PostedFile.ContentLength

                        If FileSize > 3145728 Then

                            ScriptManager.RegisterStartupScript(Me, Me.GetType(), "popup", "alert('El tamaño maximo de archivo a subir es de 3 Mb')", True)
                        Else

                            Dim tiposeguimientom As String

                            Dim annomes As String
                            annomes = Date.Now.ToString("yyyyMM")
                            Dim filename As String = annomes + "_" + lblescuela.Text + "_" + lblidpractica.Text + "_" + "FM" + i.ToString + Extension
                            Dim filename1 As String = annomes + "_" + lblescuela.Text + "_" + lblidpractica.Text + "_" + "FM" + i.ToString

                            filemen.SaveAs("\\192.168.1.206\docsopp$\FichaMensual\" & filename)


                            If i > 5 Then
                                tiposeguimientom = "0201-" + (i + 4).ToString
                            Else
                                tiposeguimientom = "0201-0" + (i + 4).ToString
                            End If

                            con.Open()
                            Dim cmd As New SqlCommand("update [OPP].[tblSeguimiento] set nombreArchi=@Name,rutaArchi=@Path,fechaReDocu=@fecha  where idPracti=@Codigo and idTiSegui= @idTiSegui ", con)
                            cmd.Parameters.AddWithValue("@Codigo", lblidpractica.Text)
                            cmd.Parameters.AddWithValue("@idTiSegui", tiposeguimientom)
                            cmd.Parameters.AddWithValue("@Name", filename1)
                            cmd.Parameters.AddWithValue("@Path", "\\192.168.1.206\docsopp$\FichaMensual\" + filename)
                            cmd.Parameters.AddWithValue("@fecha", DateTime.Now)

                            cmd.ExecuteNonQuery()
                            con.Close()

                            i = i + 1
                        End If
                    End If
                    'Else
                    '    ScriptManager.RegisterStartupScript(Me, Me.GetType(), "popup", "alert('Por favor seleccione una archivo')", True)
                    'End If
                Next
            Next

            Response.Redirect("~/Modalidades/Estado/EsFichaMensual.aspx")
    En sub

    gracias...


    • Editado fredsale viernes, 13 de marzo de 2015 0:25
    viernes, 13 de marzo de 2015 0:22

Respuestas

  • hola

    pero porque comentaste esta linea

    'If filemen.HasFile Then

    debes validar si el fileupload tiene un archivo o no seleccionado

    con ese if evitarias que se creen archivos sin contenido

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta fredsale viernes, 13 de marzo de 2015 15:12
    viernes, 13 de marzo de 2015 3:35

Todas las respuestas

  • hola

    pero porque comentaste esta linea

    'If filemen.HasFile Then

    debes validar si el fileupload tiene un archivo o no seleccionado

    con ese if evitarias que se creen archivos sin contenido

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta fredsale viernes, 13 de marzo de 2015 15:12
    viernes, 13 de marzo de 2015 3:35
  • gracias leandro

    Comente esa línea porque no me dejaba cargar solo un fileupload.... IF FILEMEN.hasfile   hace que necesariamente tenga que cargar los 2 fileuploads .

    Pero  me di cuenta de que eso permite de que no se inserten archivos vacios... para solucionarlo tuve que quitar el comentario de If filemen.HasFile Then y comente esta linea 'ScriptManager.RegisterStartupScript(Me, Me.GetType(), "popup", "alert('Por favor seleccione una archivo')", True) para qu eno me salga los mensajes de validacion


    • Editado fredsale viernes, 13 de marzo de 2015 15:09
    viernes, 13 de marzo de 2015 12:34
  • Hola

    >>hace que necesariamente tenga que cargar los 2 fileuploads 

    No debería ser, quiza es por el mensaje que mandas al usuario. Pero lo puedes resolver si validas y no mandas el mensaje al usuario.

    If Not filemen.HasFile Then 

    Continue For Each

    End if

    'Aquí continuas con la ejecución 

    // No estoy seguro de la sintaxis, pero creo que se entiende . Lo que validamos es que si el control FileUpload no tiene archivo, no lo considere y continué con el siguiente.

    Si lo que quieres es validar que por lo menos seleccione uno, te recomiendo lo hagas desde el cliente con jQuery. 

    Saludos

    viernes, 13 de marzo de 2015 15:10