Foros del Web » Programando para Internet » ASP Clásico »

No se puede usar la colección Request.Form después de llamar a BinaryRead

Estas en el tema de No se puede usar la colección Request.Form después de llamar a BinaryRead en el foro de ASP Clásico en Foros del Web. Hola a todos. Mi problema es el siguiente. Estoy intentando llevar un un archivo con unos campos a un registro de access y el archivo ...
  #1 (permalink)  
Antiguo 30/05/2005, 06:24
 
Fecha de Ingreso: noviembre-2004
Mensajes: 29
Antigüedad: 19 años, 6 meses
Puntos: 0
No se puede usar la colección Request.Form después de llamar a BinaryRead

Hola a todos.

Mi problema es el siguiente.
Estoy intentando llevar un un archivo con unos campos a un registro de access y el archivo me lo envia bien pero los campos me dice que no puedo hacer un request.from de datos binarios por lo que he estado mirando se puede hacer poniendo el objeto creado para enviar el archivo pero tampoco me deja diciendome que no esta permitido el form, mi codigo es este y el campo que quiero enviar junto con el archivo es "peticion".

<!--#include file="Uploader.asp"-->

<%
Response.Buffer = True

' load object
Dim load
Set load = new Uploader

' inicializando el objeto
load.initialize

' Datos binarios del fichero
Dim fileData
fileData = load.getFileData("file")
' Nombre del fichero
Dim fileName
fileName = LCase(load.getFileName("file"))
' Path del fichero
Dim filePath
filePath = load.getFilePath("file")
' Path completo del fichero
Dim filePathComplete
filePathComplete = load.getFilePathComplete("file")
' Tamano del fichero
Dim fileSize
fileSize = load.getFileSize("file")
' Tamano traducido del fichero
Dim fileSizeTranslated


fileSizeTranslated = load.getFileSizeTranslated("file")
' Tipo de fichero
Dim contentType
contentType = load.getContentType("file")
' No. de elementos del Form
Dim countElements
countElements = load.Count

' destruimos el objeto
Set load = Nothing
%>
<html>
<head>
<title>Insertar imagen en base de datos</title>
<style>
body, input, td { font-family:verdana,arial; font-size:10pt; }
body {
background-color: #FFCC00;
}
.BOTON {
font-size: 14px;
font-weight: bold;
color: #FFFF00;
background-color: #990000;
}
.caja {
color: #000000;
background-color: #FFFFCC;
}
</style>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head>
<body>
<form method="POST" name="lista" enctype="multipart/form-data" action="insert.asp">

<p align="center">
<b>Insertar documentos de los informes t&eacute;cnicos.</b><br>
<a href="listado.asp">Para ver los datos insertados haz clic aqu&iacute;.</a>
</p>
<table width="905" border="2">
<tr>
<td width="140">
<div align="center">
<input name="Submit" type="button" class="BOTON" value="PETICION" onClick="window.open('Listado_Contrato.asp', 'clientes', 'width=400px, height=500px, top=100px, left=100px, scrollbars=yes')">

</div>
<td width="315"><div align="center"><strong>CLIENTE</strong></div></td>
<td width="426"><div align="center"><strong>NOMBRE OBRA </strong></div></td>
</tr>
<tr>
<td><input name="peticion" type="text" class="caja" id="peticion" size="20"></td>
<td>
<div align="center">
<input name="cliente" type="text" class="caja" id="cliente" size="45">
</div>
<td><div align="center">
<input name="n_obra" type="text" class="caja" id="n_obra" size="60">
</div></td>
</tr>
<tr>
<td>&nbsp;</td>
<td><div align="center"><strong>TIPO INFORME T&Eacute;CNICO</strong></div></td>
<td><div align="center"><strong>INSPECTOR</strong></div></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>
<div align="center">
<select name="tipoInf" class="caja" id="tipoInf">
<option></option>
<option>D.0</option>
</select>
</div></td>
<td><input name="inspector" type="text" class="caja" id="inspector" size="40"></td>
</tr>
</table>
<p style="padding-left:220;"> <%= fileName %> datos recibidos...<br>
<%

' Subida de imágenes

' Comprobamos que realmente se ha insertado el fichero en la base de datos
If fileSize > 0 Then

Dim connStr
connStr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="
connStr = connStr & Server.MapPath("ficheros.mdb")

' Recordset


Dim rs
Set rs = Server.CreateObject("ADODB.Recordset")

rs.Open "Ficheros", connStr, 2, 2

' Insertando datos
rs.AddNew
rs("NombreFichero") = fileName
rs("TamanoFichero") = fileSize
rs("DatosFichero").AppendChunk fileData
rs("TipoFichero") = contentType
rs("peticion") = request.form("peticion")

rs.Update

rs.Close
Set rs = Nothing

Response.Write "<font color=""green"">El fichero ha sido guardado correctamente..."
Response.Write "</font>"
Else
Response.Write "<font color=""brown"">No has seleccionado ning&uacute;n fichero para guardar"
Response.Write "...</font>"
End If


If Err.number <> 0 Then
Response.Write "<br><font color=""red"">mmm... algo ha ido mal..."
Response.Write "</font>"
End If
%>
</p>
<table border="0" align="center">
<tr>
<td>Fichero :</td>
<td><input type="file" name="file" size="60"></td>

</tr>
<td></td>
<td><input type="submit" value="Enviar"></td>
</form>
</tr>
</table>
<table width="700" border="1" align="center">
<tr>
<td>Nombre del fichero</td><td><%= fileName %></td>
</tr><tr>
<td>Path del fichero</td><td><%= filePath %></td>
</tr><tr>
<td>Path completo del fichero</td><td><%= filePathComplete %></td>
</tr><tr>
<td>Tama&ntilde;o del fichero</td><td><%= fileSize %></td>
</tr><tr>
<td>Tama&ntilde;o del fichero adaptado</td><td><%= fileSizeTranslated %></td>
</tr><tr>
<td>Tipo del fichero</td><td><%= contentType %></td>
</tr><tr>
<td>N&ordm; de elementos del Form</td><td><%= countElements %></td>
</tr>
</table><br><br>
<br>
</body>
</html>

Gracias a todos
  #2 (permalink)  
Antiguo 30/05/2005, 06:32
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 19 años, 9 meses
Puntos: 18
creo que era algo así como que tienes que pasar todos los valores de request.form a variables ANTES de hacer cualquier operación con el fichero a subir.
  #3 (permalink)  
Antiguo 30/05/2005, 09:22
 
Fecha de Ingreso: noviembre-2004
Mensajes: 29
Antigüedad: 19 años, 6 meses
Puntos: 0
Hola trasgukabi, lo primero gracias por contestar, lo que me estas diciendo ya lo he intentado y meda el error que comentaba antes que no puedo hacer un request.form al enviar datos binarios, me imagino que tengo que utilizar el objeto load.form("peticion") para que me lleve el valor pero me dice que no puedo utilizar el form, si se te ocurre algo hazmelo saber. Un salduo y gracias
  #4 (permalink)  
Antiguo 31/05/2005, 04:16
 
Fecha de Ingreso: noviembre-2004
Mensajes: 29
Antigüedad: 19 años, 6 meses
Puntos: 0
Una ayudita por... lo que sea que me voy a cortar las venas a la altura del cuello.
  #5 (permalink)  
Antiguo 31/05/2005, 04:47
 
Fecha de Ingreso: febrero-2002
Ubicación: Navarra
Mensajes: 701
Antigüedad: 22 años, 4 meses
Puntos: 2
Pero recojes las varibles antes del include?
por que en principio si lo pones ahí creo recordar que se solucionaba el problema

Un saludo
__________________
asp, php, .net, adaptandose a las necesidades
  #6 (permalink)  
Antiguo 31/05/2005, 04:55
 
Fecha de Ingreso: noviembre-2004
Mensajes: 29
Antigüedad: 19 años, 6 meses
Puntos: 0
Gracias Haven Lo he intentado como me decias y me da el mismo problema.
No se puede usar la colección Request.Form después de llamar a BinaryRead
  #7 (permalink)  
Antiguo 31/05/2005, 05:03
Avatar de 3pies
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Desde una destilería
Mensajes: 2.584
Antigüedad: 20 años, 6 meses
Puntos: 144
Probablemente en la documentación de uploader hablará de eso ¿no?. Con xelupload pasa lo mismo pero te explican esto (cosa que no tiene porque ser igual que con uploader):

"Hay una restricción importante del objeto Request, que hace imprescindible incluir el manejo de los campos normales de un formulario dentro del programa que maneje los ficheros subidos: que después de utilizar Request.BinaryRead no se puede utilizar Request.Form y viceversa. Así que tenéis que utilizar la propiedad Form de vuestro objeto xelUpload para leer los campos habituales de un formulario."
  #8 (permalink)  
Antiguo 31/05/2005, 11:07
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
Si, tiene que ser igual porque es una restricción del objeto Request de ASP. Sólo que cada componente de upload lo maneja internamente de manera diferente.
Leé la documentación de tu componente de upload porque eso debe estar escrito allí.
__________________
...___...
  #9 (permalink)  
Antiguo 01/06/2005, 08:56
 
Fecha de Ingreso: noviembre-2004
Mensajes: 29
Antigüedad: 19 años, 6 meses
Puntos: 0
Ya esta....Por si a alguien le pudiera interesar.
dim peti
peti = load.getValue("peticion")

Un saludo y gracias de nuevo
  #10 (permalink)  
Antiguo 03/10/2006, 14:52
Avatar de richardinj  
Fecha de Ingreso: enero-2005
Ubicación: Ciber Espacio
Mensajes: 2.180
Antigüedad: 19 años, 4 meses
Puntos: 11
Yo uso
cargo= objUpload.Form("cargo")

y me funionaba normal.. ahora no se que pasa.. luego de 3 meses me sale ese error.. a pesar que no llamo en ningun momento a las variables usando request...

lo raro de todo esto es que me funciona normal en el servidor, pero en mi PC no funciona, a pesar que ya reemplaze muchas veces el archivo y sgigue con el mismo error.. que cosa es?
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 18:20.