Un buen amigo me compartio el código, supongamos que tenemos en nuestra aplicación los campos:
- Label1
- FileUpload1
Ahora lo que debemos hacer es copiar el siguiente código en el evento Page_Load de nuestra Form.
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Me.FileUpload1.HasFile Then
Session("contiene_FileUpload1") = Me.FileUpload1
Me.Label1.Text = Me.FileUpload1.FileName
End If
Si ejecutamos el debug nos daremos cuenta que Me.FileUpload1.HasFile guarda un valor True cuando seleccionamos un archivo con FileUpload, una vez seleccionado el archivo se guarda en la variable de sesión Session("contiene_FileUpload1") el contenido del FileUpload, si revisas el contenido de la variable de sesión estará vacío, pero entonces?, yo también pensé lo mismo, mi amigo me explico que lo que guarda en la variable de sesión es el campo FileUpload no el nombre del archivo seleccionado.
Cuando hagamos un Postback el nombre del archivo seleccionado se guardara en Label1 y en la variable de sesión aunque el campos FileUpload este vació.
Agregamos un botón donde colocaremos el código para guardar el archivo seleccionado, copiamos el siguiente código:
Dim savepath = "c:\inetpub\wwwroot\responsivas"
'verifica que FileUpload=true o que Label1 tenga algún contenido
If Me.FileUpload1.HasFile = False And Me.Label1.Text.Trim.Length > 0 Then
'Copia el contenido de la variable de sesión a FileupLoad
Me.FileUpload1 = Session("contiene_FileUpload1")
End If
If FileUpload1.FileName <> "" Then
'Copia el archivo a la ruta
savepath += FileUpload1.FileName
FileUpload1.SaveAs(Server.MapPath(savePath))
End If
ACTUALIZACION
Si tienes configurado en el web.config de tu aplicación "SQLServer"
Al realizar un postback se visualizara el siguiente error:
El problema es porque enviamos en control FileUpload a una variable de sesión, la solución es enviar Fileupload en bytes a la variable de sesión :
Revisa: http://vbpuntonet.blogspot.mx/2016/04/copiar-archivos-con-systemiofilewriteal.html
0 Comentarios