CLR: .Net / Mono / Boo / Otros CLR > VB .NET

 Control FileUpload

(1/2) > >>

elgaiti:
Buenas a todos.

Estoy desarrollando una aplicacion en vb.net.
Necesito que los usuarios puedan "subir" a la aplicación, planillas excel, desde sus propios discos rígidos.
Luego son pasados a sql, procesados y termino emitiendo un informe con ReportServices.

Para que los usuarios puedan "subir" sus archivos, coloqué un FileUpload, que va a buscar en el disco local.
No estoy pudiendo hacer que corriendo la aplicación desde un servidor, el sistema pueda leer el archivo y desarrollar las funciones.
En ningún momento el archivo debe estar copiado en el servidor.

Espero que se entienda y que me puedan ayudar.

Saludos.  Damián.

carlosespinoza:
hola, si lo que quieres es procesar la información del archivo de excel... puedes hacer que el usuario seleccione el archivo y tu volcar toda la información a un datagrid y de ahi manipularlo como tu necesites...

Yo necesitaba que el archivo que me manda el banco en excel, meter los depositos y disposiciones en la BD, entonces asi lo hise:


--- Código: Text --- 'pedir al usuario que seleccione el archivo, openFD= Control OpenFileDialogDim archivo As String        With openFD            .Title = "Seleccionar archivo de Exportación"            .Filter = "Archivos de exportación Bancomer (*.xls)|*.xls"            .Multiselect = False            .InitialDirectory = My.Computer.FileSystem.SpecialDirectories.MyDocuments            If .ShowDialog = Windows.Forms.DialogResult.OK Then                archivo = .FileName            Else                Exit Sub            End If        End With        'cargarlo en la datagrid        Try            Dim strconn As String, dt As New DataTable            strconn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & archivo & ";Extended Properties='Excel 8.0;HDR=NO;IMEX=1'"            Dim mconn As New OleDbConnection(strconn)            Dim ad As New OleDbDataAdapter("Select * from [hoja1$]", mconn)            mconn.Open()            ad.Fill(dt)            mconn.Close()            Me.dgvExcel.DataSource = dt        Catch ex As OleDbException            MessageBox.Show(ex.Message)        End Try  
Espero que te sirva...
Saludos :good:

elgaiti:
Muchas gracias...

Eso es lo que estoy haciendo.
El problema lo tengo con la "subida" del archivo.
Si ejecuto el programa desde mi pc, todo funciona perfecto, pero si publico la aplicacion e ingreso mediante IE, el sistema, en lugar de tomar como origen del archivo de excel el "C:etc..." de mi pc, está buscando el "C:etc..." del servidor...

Espero que me haya explicado bien.
Copio el código que estoy utilizando.

Gracias.


--- Código: Text ---     Sub CargarPersonal(ByVal sHoja As String)         SQL = "Delete Calculo_Detalle"        Acceso.ExecuteNonQuery(SQL)         SQL = "Delete Calculo_Cabecera"        Acceso.ExecuteNonQuery(SQL)         SQL = "Delete from Empleados"        Acceso.ExecuteNonQuery(SQL)         If FileUploadPersonal.Visible = True Then            If FileUploadPersonal.PostedFile.FileName = "" Then                Exit Sub            Else                Archivo = FileUploadPersonal.PostedFile.FileName            End If        Else            Archivo = LblUbicacionPersonal.Text        End If         If Not System.IO.File.Exists(Archivo) Then            'MsgBox("No se encontró el Libro: " & _            '        SLibro, MsgBoxStyle.Critical, _            '        "Ruta inválida")            Exit Sub        End If           SQLImportar = "Select * From [" & sHoja & "$]"        Datos = Acceso.Importar(SQLImportar, Archivo)         Dim x As Integer        x = Datos.Rows.Count         ' Dim I As Integer         For I = 1 To x - 1             Dim SQL As String             V_Cuil = Datos.Rows(I)(0)            V_Legajo = Datos.Rows(I)(1)            V_Apellido = Datos.Rows(I)(2)            V_Nombre = Datos.Rows(I)(3)              SQL = " insert into Empleados" & _                  " (Cuil,Legajo, Apellido,  Nombres)" & _                  " Values (" & V_Cuil & ",'" & V_Legajo & "','" & V_Apellido & "','" & V_Nombre & "')"             Acceso.ExecuteNonQuery(SQL)         Next I  

carlosespinoza:
Ok, ya te entendi correctamente...

Mira si no estoy mal, lo que pasa es que la cuenta ASP.Net del servidor no tiene permisos de escritura en tus carpetas del servidor...

en la carpeta da clic en propiedades/permisos y agrega al usuario ASP.Net y dale permisos de escritura, con eso ya puedes copiar archivos al servidor desde el IE, debe de ser eso. porque yo queria subir fotos de usuarios y eso me pasaba, me decia error, pero le di los permisos y todo arreglado...

Te recomiendo que crees una carpeta dentro de las carpetas del sistema para guardar tus archivos y no directamente en c:... eso te permitira tener mas control sobre los archivos que suben y tambien evitas que otro administrador borre los archivos pensando que alguien mas los subio...

Saludos :good:

carlosespinoza:
Te dejo el codigo que uso, posiblemente te sirva:

--- Código: Text ---         Dim path As String = Server.MapPath("~/" & tipos.SelectedItem.Value & "/")        Dim fileOK As Boolean = False        If FileUpload1.HasFile Then            Dim fileExtension As String            fileExtension = System.IO.Path. _                GetExtension(FileUpload1.FileName).ToLower()            Dim allowedExtensions As String() = _                {".jpg"}            For i As Integer = 0 To allowedExtensions.Length - 1                If fileExtension = allowedExtensions(i) Then                    fileOK = True                End If            Next            If fileOK Then                Try                    FileUpload1.PostedFile.SaveAs(path & _                         FileUpload1.FileName)                    Label1.Text = "Archivo Cargado!"                Catch ex As Exception                    Label1.Text = "El Archivo no puede ser cargado."                End Try            Else                Label1.Text = "No se acepta este tipo de archivo; Solo se acepta .jpg"            End If        End If  
Saludos

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa