Lunes 23 de Diciembre de 2024, 09:03
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
CLR: .Net / Mono / Boo / Otros CLR
»
VB .NET
(Moderador:
ElNapster
) »
Control FileUpload
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Control FileUpload (Leído 7978 veces)
elgaiti
Miembro activo
Mensajes: 29
Control FileUpload
«
en:
Jueves 20 de Noviembre de 2008, 19:49 »
0
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.
Tweet
carlosespinoza
Miembro activo
Mensajes: 53
Nacionalidad:
Re: Control FileUpload
«
Respuesta #1 en:
Miércoles 26 de Noviembre de 2008, 20:33 »
0
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 OpenFileDialog
Dim 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
elgaiti
Miembro activo
Mensajes: 29
Re: Control FileUpload
«
Respuesta #2 en:
Jueves 27 de Noviembre de 2008, 12:25 »
0
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
Miembro activo
Mensajes: 53
Nacionalidad:
Re: Control FileUpload
«
Respuesta #3 en:
Jueves 27 de Noviembre de 2008, 16:01 »
0
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
carlosespinoza
Miembro activo
Mensajes: 53
Nacionalidad:
Re: Control FileUpload
«
Respuesta #4 en:
Jueves 27 de Noviembre de 2008, 16:07 »
0
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
elgaiti
Miembro activo
Mensajes: 29
Re: Control FileUpload
«
Respuesta #5 en:
Viernes 28 de Noviembre de 2008, 14:20 »
0
Muchas gracias por la respuesta.
Te cuento que ahora lo estoy pudiendo hacer, pero me pide que el archivo de origen excel, esté en el servidor.
Yo le asigno como path c:Datosarchivo.xls, pero el sistema está buscando esa ruta en el servidor, mientras que la tiene que tomar de la pc cliente.
No entiendo como solucionar esto!
elgaiti
Miembro activo
Mensajes: 29
Re: Control FileUpload
«
Respuesta #6 en:
Viernes 28 de Noviembre de 2008, 14:45 »
0
Perdón...
No se si me expliqué bien antes, por eso vuelvo a escribir...esto me está poniendo de los pelos!!!
1.- El usuario debe, mediante un fileupload, seleccionar de SU disco local, un archivo excel. (actualmente, el fileupload con el examinar busca ok en SU disco local).
2.- Copio el archivo a una carpeta del servidor.
3.- Importo el archivo de excel a una bbdd de sql.
4.- Realizo cálculos y muestro reportes.
Problema:
El problema lo estoy teniendo con el fileupload, ya que si queda como ruta "C:datosarchivo.xls", la aplicación, busca la ruta "C:datosarchivo.xls", en el servidor, y obviamente no lo encuentra...
Ayuda!
Gracias.
carlosespinoza
Miembro activo
Mensajes: 53
Nacionalidad:
Re: Control FileUpload
«
Respuesta #7 en:
Viernes 28 de Noviembre de 2008, 16:00 »
0
Por eso
... realmente no se que es lo que no entiendes...
el metodo server.mappath te da la dirección donde esta tu aplicación, la ~ es como un comodin para refrerirte a toda la direccion, el control fileupload te permite dirigir donde quieres guardar el archivo:
Código: Text
Dim path As String = Server.MapPath("~/archivos/")
...
FileUpload1.PostedFile.SaveAs(path & FileUpload1.FileName)
entonces cuando abras el archivo (ya previamente guardado) tienes que abrirlo con ese path... ejemplo:
Código: Text
dim archivo as string= path & FileUpload1.FileName
al usarlo asi, generas una ruta y carpeta especifica para el archivo...
Realmente no veo lo complicado a esto...
Saludos y espero que con esto ya quede...
si de plano no se puede, contactame por messenger:
espinoza_vfp@hotmail.com
leipunk
Nuevo Miembro
Mensajes: 3
Re: Control FileUpload
«
Respuesta #8 en:
Sábado 13 de Diciembre de 2008, 19:02 »
0
que tal!!
Lo que debes hacer para poder leer tu archivo xls en asp.net es lo siguiente:
- Tener una carpeta en el IIS, con permiso de lectura escritura. Eso para poder subir tus archivos al servidor. Aunque no quieras debes subir los archivos xls al servidor, para que puedas tener acceso a ellos, ya que no puedes tener acceso al equipo cliente, por razones obvias de seguridad.
- Una vez que cargas el archivo xls a tu servidor, no tienes mas que abrirlo leerlo y cargar los datos que necesitas con el cogio ya expuesto.
- Enresumidas cuentas el unico problema que tenias es el de permisos, en el equipo de desarrollo local no tienes problemas ya que estas en el mismo espacio de trabajo, pero cuando cambias a un entorno de produccion es distinto.
Espero poder haberte ayudado.
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
CLR: .Net / Mono / Boo / Otros CLR
»
VB .NET
(Moderador:
ElNapster
) »
Control FileUpload