Foros del Web » Programando para Internet » ASPX (.net) »

Problema con UpLoad....SOS

Estas en el tema de Problema con UpLoad....SOS en el foro de ASPX (.net) en Foros del Web. Tengo el siguiente upload: Public Class UpLoad Inherits System.Web.UI.Page Protected WithEvents file1 As System.Web.UI.HtmlControls.HtmlInputFile Protected WithEvents BtnEnviar As System.Web.UI.WebControls.Button Protected WithEvents lbl_error As System.Web.UI.WebControls.Label #Region ...
  #1 (permalink)  
Antiguo 31/07/2005, 21:10
Avatar de ciberpato  
Fecha de Ingreso: agosto-2004
Mensajes: 142
Antigüedad: 19 años, 8 meses
Puntos: 1
Pregunta Problema con UpLoad....SOS

Tengo el siguiente upload:

Public Class UpLoad
Inherits System.Web.UI.Page
Protected WithEvents file1 As System.Web.UI.HtmlControls.HtmlInputFile
Protected WithEvents BtnEnviar As System.Web.UI.WebControls.Button
Protected WithEvents lbl_error As System.Web.UI.WebControls.Label

#Region " Código generado por el Diseñador de Web Forms "

'El Diseñador de Web Forms requiere esta llamada.
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

End Sub

Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN: el Diseñador de Web Forms requiere esta llamada de método
'No lo modifique con el editor de código.
InitializeComponent()
End Sub

#End Region

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Introducir aquí el código de usuario para inicializar la página
lbl_error.Text = ""
End Sub
Function CheckFile() As Boolean
If file1.PostedFile.ContentLength > 0 Then
If Not (file1.PostedFile.ContentLength / 1000) > 500 Then
Dim FileExt As String
FileExt = System.IO.Path.GetExtension(file1.PostedFile.FileN ame).ToLower
If FileExt = ".jpg" Or FileExt = ".gif" Or FileExt = ".jpeg" Or FileExt = ".bmp" Or FileExt = ".tiff" Then
lbl_error.Text = "El fichero a sido enviado!!!"
Return True
Else
lbl_error.Text = "La extensión del fixhero no es corecta."
Return False
End If
Else
Dim SizeMBs As String
SizeMBs = CStr(file1.PostedFile.ContentLength / (1024 * 1024))
SizeMBs = SizeMBs.Substring(0, SizeMBs.IndexOf(".") + 3)
lbl_error.Text = "El fichero es demasiado grande ! tu pudes enviar ficheros de 500 Kb como maximo, y el fichero actual tine un tamaño de " & SizeMBs & "MB"
Return False
End If
Else
lbl_error.Text = "Fichero no Valido"
Return False
End If
End Function


Function SaveFile() As Boolean
If CheckFile() = True Then
Dim Fname As String = System.IO.Path.GetFileName(file1.PostedFile.FileNa me)
'file1.PostedFile.SaveAs(Server.MapPath("Descargas \" & Fname)) '// ruta relativa
file1.PostedFile.SaveAs("C:\Inetpub\wwwroot\Sercot ec\Descargas\" & Fname) '// ruta absoluta
Return True
Else
Return False
End If
End Function

Private Sub BtnEnviar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnEnviar.Click
SaveFile()
End Sub
End Class

Todo bien en la selección del archivo....el problema se presenta cuando envío el archivo. Me reclama con el siguiente error en tiempo de ejecución:

[NullReferenceException: Referencia a objeto no establecida como instancia de un objeto.]
Sea cae cuando ejecuta la linea 27:

Línea 26: Function CheckFile() As Boolean
Línea 27: If file1.PostedFile.ContentLength > 0 Then
Línea 28: If Not (file1.PostedFile.ContentLength / 1000) > 500 Then
Línea 29: Dim FileExt As String

De antemanos agradezco su colaboración para solucionar este dilema.
  #2 (permalink)  
Antiguo 31/07/2005, 21:31
Avatar de erick_arcini  
Fecha de Ingreso: julio-2005
Ubicación: Jaltenco / DF
Mensajes: 1.723
Antigüedad: 18 años, 9 meses
Puntos: 50
y "file1" ya esta declarado como new, por que segun el error es una instacia????
  #3 (permalink)  
Antiguo 31/07/2005, 21:45
Avatar de ciberpato  
Fecha de Ingreso: agosto-2004
Mensajes: 142
Antigüedad: 19 años, 8 meses
Puntos: 1
erick ... en donde debo declararlo???... creo que te refieres a:

Protected WithEvents file1 As New System.Web.UI.HtmlControls.HtmlInputFile
  #4 (permalink)  
Antiguo 31/07/2005, 21:58
Avatar de erick_arcini  
Fecha de Ingreso: julio-2005
Ubicación: Jaltenco / DF
Mensajes: 1.723
Antigüedad: 18 años, 9 meses
Puntos: 50
si, por que estas creando una nueva instancia, bueno hay veces que me generan errores de esos mis progra+ y todo se aregla con new
  #5 (permalink)  
Antiguo 31/07/2005, 22:06
Avatar de ciberpato  
Fecha de Ingreso: agosto-2004
Mensajes: 142
Antigüedad: 19 años, 8 meses
Puntos: 1
Hice lo indicado pero sigue reclamando en la linea 27 indicada al comimienzo de este tema
  #6 (permalink)  
Antiguo 31/07/2005, 22:43
Avatar de erick_arcini  
Fecha de Ingreso: julio-2005
Ubicación: Jaltenco / DF
Mensajes: 1.723
Antigüedad: 18 años, 9 meses
Puntos: 50
fijate en el tipo de archivo, cabe la posibilidad de que el encapsulamiento no sea el efectivo para ese objeto, y si no sale con eso pues entonces te fallo canijo, como se dice en los errores NULLREFERENCEEXCEPTION
  #7 (permalink)  
Antiguo 01/08/2005, 07:14
Avatar de ciberpato  
Fecha de Ingreso: agosto-2004
Mensajes: 142
Antigüedad: 19 años, 8 meses
Puntos: 1
Disculpa erick, ayer tuve problemas con el foro...asi que quedé out. A que te refieres con "encapsulamiento no sea el efectivo para ese objeto".
  #8 (permalink)  
Antiguo 01/08/2005, 07:21
Avatar de erick_arcini  
Fecha de Ingreso: julio-2005
Ubicación: Jaltenco / DF
Mensajes: 1.723
Antigüedad: 18 años, 9 meses
Puntos: 50
exactamente ya sea protected, private o public
  #9 (permalink)  
Antiguo 01/08/2005, 07:48
Avatar de ciberpato  
Fecha de Ingreso: agosto-2004
Mensajes: 142
Antigüedad: 19 años, 8 meses
Puntos: 1
Lo puse publico es decir:
Public WithEvents file1 As System.Web.UI.HtmlControls.HtmlInputFile

el error es el mismo.......estoy quemado
  #10 (permalink)  
Antiguo 01/08/2005, 07:54
Avatar de erick_arcini  
Fecha de Ingreso: julio-2005
Ubicación: Jaltenco / DF
Mensajes: 1.723
Antigüedad: 18 años, 9 meses
Puntos: 50
Ejemplo
[Visual Basic, C#, JScript] En este ejemplo se muestra la forma de utilizar el control HtmlInputFile para crear un escenario de carga de archivos simple. Para que este ejemplo funcione correctamente, es necesario crear en la unidad C: un directorio denominado TEMP.

[Visual Basic]
<%@ Page Language="VB" AutoEventWireup="True" %>

<html>
<head>

<script language="VB" runat="server">
Sub Button1_Click(Source As Object, e As EventArgs)

If Text1.Value = "" Then
Span1.InnerHtml = "Error: you must enter a file name"
Return
End If

If Not (File1.PostedFile Is Nothing) Then
Try
File1.PostedFile.SaveAs(("c:\temp\" & Text1.Value))
Span1.InnerHtml = "File uploaded successfully to <b>c:\temp\" & _
Text1.Value & "</b> on the Web server"
Catch exc As Exception
Span1.InnerHtml = "Error saving file <b>c:\temp\" & _
Text1.Value & "</b><br>" & exc.ToString()
End Try
End If
End Sub 'Button1_Click
</script>

</head>
<body>

<h3>HtmlInputFile Sample</h3>

<form enctype="multipart/form-data" runat="server">

Select File to Upload:
<input id="File1"
type="file"
runat="server">

<p>
Save as filename (no path):
<input id="Text1"
type="text"
runat="server">

<p>
<span id=Span1
style="font: 8pt verdana;"
runat="server" />

<p>
<input type=button
id="Button1"
value="Upload"
OnServerClick="Button1_Click"
runat="server">

</form>

</body>
</html>

Encontre ese codigo en MSDN no se si te sirva???
  #11 (permalink)  
Antiguo 01/08/2005, 08:06
Avatar de ciberpato  
Fecha de Ingreso: agosto-2004
Mensajes: 142
Antigüedad: 19 años, 8 meses
Puntos: 1
okey ...gracias voy hacer las pruebas y te cuento
  #12 (permalink)  
Antiguo 09/08/2005, 12:48
Avatar de ciberpato  
Fecha de Ingreso: agosto-2004
Mensajes: 142
Antigüedad: 19 años, 8 meses
Puntos: 1
Erick....todo funciona bien. Solo tengo una duda ..en el code que tu me comentas uso una ruta absoluta. Si tengo que usar este en un servidor web creo que debo usar la ruta relativa es decir:

postedFile.SavesAs(Server.MapPath(savePath & filename)).... estoy en lo correcto??
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:32.