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

asp subir archivos o foto

Estas en el tema de asp subir archivos o foto en el foro de ASP Clásico en Foros del Web. Hola a todos, A mí el problema de "Ocurrió una excepción. /iisHelp/common/500-100.asp, line 414 " sólo modo cuando lo ejecuto en modo local, supongo que ...

  #1 (permalink)  
Antiguo 12/12/2008, 11:34
 
Fecha de Ingreso: junio-2008
Mensajes: 145
Antigüedad: 16 años
Puntos: 0
asp subir archivos o foto

Hola a todos,

A mí el problema de "Ocurrió una excepción.

/iisHelp/common/500-100.asp, line 414 " sólo modo cuando lo ejecuto en modo local, supongo que es un problema de seguridad, archivos en modo de sólo lectura o algo así pero cuando lo ejecuto online el fallo que me hace es que no me sube el fichero.

Es decir sube todos los datos tipo texto, incluso pone bien el nombre del archivo de imagen y su ruta pero no sube el archivo, por lo que a la hora de mostrar la imagen no hay nada.

Lo he hecho a través de xelupload y tengo 2 formas de hacerlo en las que pasa lo mismo, una es crear una ficha nueva y otra editar alguna ficha existente. En las 2 parece que lo hace todo correctamente ya que no me da ningún error pero no sube el archivo. Pongo el código por si me podéis ayudar:


adminficha.asp

Código PHP:
<% sql "Select id,Titulo from PELICULAS order by id asc"
   
tabla.open sql,conexion%> 
<
table width="500" border="1" align="center" bgcolor="#942629" valign="top">
<
tr>
            <
td colspan="5" height="14px" class="centrogris">
                
ZONA DE ADMINISTRACION</td>
  </
tr><tr>
          <
tr>
           <
td class="azul" colspan="5" >FICHAS</td>
          </
tr>
         <% while 
not tabla.eof%>
         <
tr>
           <
td class="gris" width="20" bgcolor="#FFFFFF"><div align="center"><%=tabla.fields("id")%></div></td>
           <
td width="250" bgcolor="#FFFFFF"><div align="center"><%=tabla.fields("Titulo")%></div></td>
           <
td class="centro3" style="background-color:#FFFFFF"><a href="Editarficha.asp?id=<%=tabla.fields("id")%>">Editar</a></td>
           <
td class="centro3" style="background-color:#FFFFFF">><a href="Eliminarficha.asp?id=<%=tabla.fields("id")%>">Eliminar</a></td>           
         </
tr>
       <%=
tabla.movenext%>
        <% 
wend %>
        <
tr><td colspan="5" style="background-color:#000;color:#FFF"><div align="center"><class="menulink" href="nuevaficha.asp">Nueva ficha</a></div></td>
          </
tr>                
          <
td colspan="5" style="background-color:#000;color:#FFF"><div align="center"><a href="index.asp">Cerrar sesi&oacute;n</a></div></td>             
</
tr>
<
tr>
        <
td colspan="5" style="background-color:#000;color:#FFF"><div align="center" class="centro3"><class="menuprincipal" href="administracion.asp">Volver al menu de administración</a></div></td>
        </
tr>                  
</
table

Editarficha.asp


Código PHP:
<% id request("id")
          
sql "Select * from PELICULAS where id =" id
   tabla
.open sql,conexion%> 
   <
form action="registrarficha.asp" method="post" enctype="multipart/form-data">
<
table width="500" border="1" align="center" bgcolor="#942629" valign="top">
<
tr>
            <
td colspan="5" height="14px" class="centro3">
                
ZONA DE ADMINISTRACION</td>
          </
tr><tr>
          <
tr>
           <
td class="azul" colspan="5" >EDITAR PELICULA</td>
          </
tr>
         <
tr>
          <
td>Titulo</td><td colspan="4" bgcolor="#FFFFFF"><div align="center"><input name="titulo" id="titulo" value="<%=tabla.fields("Titulo")%>" type="text" size="58" /></div></td>           
         </
tr>
         <
tr>
           <
td>Director</td><td colspan="4" bgcolor="#FFFFFF">
            <
div align="center">
             <
input name="director" id="director" value="<%=tabla.fields("Director")%>" type="text" size="58" /></div></td>
         </
tr>
         <
tr>
           <
td>Año</td><td colspan="4" bgcolor="#FFFFFF">
            <
div align="center">
              <
input name="anio" id="Anio" value="<%=tabla.fields("Anio")%>" type="text" size="58" />
             </
div>
           </
td>
         </
tr>
         <
tr>
          <
td>Duración</td><td colspan="4" bgcolor="#FFFFFF"><div align="center"> <input name="min" id="min" value="<%=tabla.fields("Min")%>" type="text" size="58" /></div></td>          </tr>
         <
tr>
         <
td>Género</td
         <
td colspan="4" bgcolor="#FFFFFF"><div align="center"><input name="genero" id="genero" value="<%=tabla.fields("Genero")%>" type="text" size="58" /></div></td>           
         </
tr>
         <
tr>
         <
td>País</td
         <
td colspan="4" bgcolor="#FFFFFF"><div align="center"><input name="pais" id="pais" value="<%=tabla.fields("Pais")%>" type="text" size="58" /></div></td>           
         </
tr>
         <
tr>
         <
td>Argumento</td
         <
td colspan="4" bgcolor="#FFFFFF"><div align="center">
         <
textarea name="argumento" id="argumento" cols="45" rows="6">
         <%=
tabla.fields("Argumento")%>
         </
textarea>         
         </
div></td>           
         </
tr>
         <
tr>
         <
td>Interprétes</td
         <
td colspan="4" bgcolor="#FFFFFF"><div align="center"><input name="interpretes" id="interpretes" value="<%=tabla.fields("Interpretes")%>" type="text" size="58" /></div></td>           
         </
tr>
         <
tr>
           <
td>Foto</td><td colspan="4" bgcolor="#FFFFFF"><div align="center"><img src="caratulas/<%=tabla.fields("Foto")%>" /></td></div>             
           </
tr>
           <
tr>
           <
td>  
             
Foto
           
</td>
           <
td>  
             <
input type="file" name="fichero" id="fichero"  />
           </
td>
         </
tr>
        <
tr>         
     <
td colspan="5" class="centro3">
       <
input type="submit" name="button" id="button" value="Enviar" /></td>
       </
tr>
       <
tr>
         <
td colspan="5" class="centro3"><div align="center"><a href="index.asp">Cerrar sesi&oacute;n</a></div></td>             
</
tr>                  
</
table>
<% 
session("id") = id %>
<% 
tabla.close%>
</
form
Y por último el archivo en el que creo que está el error pero no consigo verlo:

registrarficha.asp

Código PHP:
<body>
<!--
#include file="includes/xelupload.asp"-->
        
<%
        
id session("id")
        
'Primero subimos el fichero:
        Dim up, fich
        set up = new xelUpload
        up.Upload()
        
        For each fich in up.Ficheros.Items
        '
Para guardarlo
            nombreFoto
=fich.nombre
                        
'Con el nombre de fichero original:
            fich.Guardar Server.MapPath("../caratulas/")
            '
Con otro nombre:
            
'fich.GuardarComo nombrefichero, Server.MapPath("l")
        '
----------------------------------------------------------------
        
Next
        
%>
        <!--
#include file="includes/AbrirBD.asp" -->
        
<%                            
        
titulo up.form("titulo"
        
director up.form("director")
        
anio up.form("anio")
        
min up.form("min"
        
genero up.form("genero"
        
pais up.form("pais"
        
argumento up.form("argumento")
        
interpretes up.form("interpretes")
        
        
sql"Select * from PELICULAS where Id =" id
        tabla
.open sql,conexion,1,3
        
        tabla
.fields("Titulo") = titulo
        tabla
.fields("Director") = director
        tabla
.fields("Anio") = anio
        tabla
.fields("Min") = min
        tabla
.fields("Genero") = genero
        tabla
.fields("Pais") = pais
        tabla
.fields("Argumento") = argumento
        tabla
.fields("Interpretes") = interpretes
        
        
if (len(nombreFoto) > 0then
            tabla
.fields("Foto") = nombreFoto
        end 
if    
                
        
tabla.update
        tabla
.close %>
        
Ficha actualizada. <a href="Adminficha.asp">Continuar</a>.
</
body
  #2 (permalink)  
Antiguo 12/12/2008, 14:01
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 5 meses
Puntos: 126
Respuesta: asp subir archivos o foto

Hola

De un vistazo, al parecer solo subes un archivos, así que para que usas el ciclo

Cita:
For each fich in up.Ficheros.Items
'Para guardarlo
nombreFoto=fich.nombre
'Con el nombre de fichero original:
fich.Guardar Server.MapPath("../caratulas/")
'Con otro nombre:
'fich.GuardarComo nombrefichero, Server.MapPath("l")
'----------------------------------------------------------------
Next
Yo haría

Código asp:
Ver original
  1. set obj = up.Ficheros("fichero")
  2.  obj.Guardar Server.MapPath("../caratulas/")

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #3 (permalink)  
Antiguo 12/12/2008, 16:43
 
Fecha de Ingreso: junio-2008
Mensajes: 145
Antigüedad: 16 años
Puntos: 0
Respuesta: asp subir archivos o foto

Hola Adler,

Gracias por tu ayuda. La verdad es que estaba puesto de esa manera porque lo vi en algun sitio así pero vamos no sabía muy bien porque, de todas formas si me vendría bien que se pudieran subir 2 ficheros pero ahora con uno ya tendría más que suficiente.

He probado con tu método y sigue sin funcionar. Sigue dejandome editar los textos y se queda con el nombre de la foto que intento subir pero no sube el archivo. No tengo ni idea de porque puede ser, supongo que si fuera un tema de permisos no me dejaría crear nuevos campos en la base de datos y modificarlos ¿no?

Lo he dejado así:
Código PHP:
<%
        
id session("id")
        
Primero subimos el fichero:
        
Dim upobj
        set up 
= new xelUpload
        up
.Upload()
        
      
      
set obj up.Ficheros("fichero")
       
obj.Guardar Server.MapPath("../caratulas/")
       
nombreFoto=obj.nombre
       
%> 
  #4 (permalink)  
Antiguo 13/12/2008, 06:50
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 5 meses
Puntos: 126
Respuesta: asp subir archivos o foto

Hola

Creo que ha sido un error mio, no me dí cuenta. Prueba así

Código asp:
Ver original
  1. set obj = up.Ficheros("fichero")
  2. obj.Guardar(Server.MapPath("../caratulas/"))

Fijate que en el archivo xelupload tienes algo así
Public Sub Guardar(ruta)
Tal y como lo estábamos haciendo antes no pasábamos ningún valor.

Si aún así no funciona, entonces tal vez el problema está en que tu servidor no admite FileSystemObject

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #5 (permalink)  
Antiguo 13/12/2008, 17:24
 
Fecha de Ingreso: junio-2008
Mensajes: 145
Antigüedad: 16 años
Puntos: 0
Respuesta: asp subir archivos o foto

Hola Adler,

Gracias por responder de nuevo, tenías razón, el problema debe estar en el servidor que no parece admitir el FileSystemObject, he probado en el servidor "bueno" uno que supuestamente acepta todo, asp, php, bases de datos de access, mysql, etc y sigue sin funcionar aunque no da ningun error. Pero lo he probado, con estos mismos archivos en otro servidopr gratuito y me ha dado este error:

"Server object error 'ASP 0177 : 800401f3'

Server.CreateObject Failed

/_____15_/haga041/videoclub/includes/xelupload.asp, line 168

800401f3 "


Es decir error en la línea del xelupload en la que aparece esto:

set oFSO = Server.CreateObject("Scripting.FileSystemObject")

¿Sabes de alguna web gratuita de ASP que permita subir bases de datos de Access y permita FileSystemObject?
  #6 (permalink)  
Antiguo 14/12/2008, 10:23
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 17 años, 3 meses
Puntos: 88
Respuesta: asp subir archivos o foto

has intentado preguntar en el soporte del servidor, los parametros necesarios para que puedas usar FSO, y access.....

por lo regular te asignan un usuario y carpeta para estos procedimientos

__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #7 (permalink)  
Antiguo 15/12/2008, 13:29
 
Fecha de Ingreso: junio-2008
Mensajes: 145
Antigüedad: 16 años
Puntos: 0
Respuesta: asp subir archivos o foto

Hola Shiryu_Libra,

Gracias por la ayuda, en el servidor gratuito he enviado un mail para ver si me pueden decir algo pero supongo que irá para largo y en la otra que es una web que en teoría debería permitirlo, es una web de un sitio en el que estudié así que ando esperando a que me hagan algo de caso, en este caso si tengo un nombre de usuario y contraseña que son los que uso cuando subo todo de tipo de arhcivos por FTP con Dreamweaver pero no se como poner esos datos en el archivo xelupload o en el que haga falta.

De todas formas, en modo local debería funcionar ¿no? Le he dado permisos de seguridad de lectura y ejecución, lectura y escritura a la base de datos e incluso a la carpeta del sitio entero y no subo ninguna imagen aunque si mete el nombre de las imagenes a la base de datos.

Saludos
  #8 (permalink)  
Antiguo 15/12/2008, 14:46
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 17 años, 3 meses
Puntos: 88
Respuesta: asp subir archivos o foto

verifica tus rutas virtuales, probablemente no encuentra la ruta para subir el archivo
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #9 (permalink)  
Antiguo 16/12/2008, 10:40
 
Fecha de Ingreso: junio-2008
Mensajes: 145
Antigüedad: 16 años
Puntos: 0
Respuesta: asp subir archivos o foto

¡Por fin! ¡Funciona perfctamente tanto en local como online!

¡Gracias Shiryu_Libra!
Revisando las rutas virtuales y las carpetas en las que tenía que subirme los archivos, me he dado cuenta de que si lo ponía así:

obj.Guardar(Server.MapPath("caratulas/"))

Me subía un jpg con el nombre correcto pero que no era la foto que yo quería sino on archivo "dañado". Revisando un post de rutas virtuales y xelupload he visto que alguien mencionó la versión de VBScript de la página que sube el archivo y ahí estaba el fallo, en cuanto he cambiado el código de <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%> a <%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
ha empezado a funcionar perfectamente.

Ahora estoy intentando perfeccionarlo para subir más de una foto cada vez y sobre todo me interesaría que después de subir la primera foto me generase una nueva con el mismo nombre pero más pequeña (de 162x240 pasaría a 56x83 px) y me la guardase en la carpeta de miniaturas en vez de en la de caratulas.

Entiendo que sería una función que se ejecutaría jsuto después de guardar la primera foto en caratulas pero aún le estoy dando vueltas a como hacerlo.

Ahora lo tengo así pero lo único que consigo es guardar la misma foto en las 2 carpetas.

Código PHP:
obj.Guardar(Server.MapPath("caratulas/"))    
obj.Guardar(Server.MapPath("miniaturas/")) 
  #10 (permalink)  
Antiguo 16/12/2008, 10:47
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 17 años, 3 meses
Puntos: 88
Respuesta: asp subir archivos o foto

solo un poco de paciencia para saber el pequeño error
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #11 (permalink)  
Antiguo 19/12/2008, 17:38
 
Fecha de Ingreso: junio-2008
Mensajes: 145
Antigüedad: 16 años
Puntos: 0
Respuesta: asp subir archivos o foto

Tenías razón Shiryu_Libra con un poco de tranquilidad por fin he conseguido adaptarlo para subir 2, o los archivos que quiera a la vez, lo único que he hecho es llamarle fichero2 al segundo campo file el editarficha.asp y en registrarficha.asp poner esto:

Código PHP:
<!--#include file="includes/xelupload.asp"-->

<&#37;
        
id session("id")
        
'Primero subimos el fichero:'
        
Dim upobjobj2
        set up 
= new xelUpload
        up
.Upload()            
        
set obj up.Ficheros("fichero")      
nombreFoto=obj.nombre
obj
.Guardar(Server.MapPath("caratulas/"))    
    
        
set obj2 up.Ficheros("fichero2")
nombreFoto2=obj2.nombre 
obj2
.Guardar(Server.MapPath("miniaturas/"))
      

%> 
Y al final esto:

Código PHP:
<%if (len(nombreFoto) > 0then
            tabla
.fields("Foto") = nombreFoto
        end 
if
        
        if (
len(nombreFoto2) > 0then
            tabla
.fields("Miniatura") = nombreFoto2
        end 
if
                
        
tabla.update
        tabla
.close        
        conexion
.close
        set up 
nothing
        Set tabla 
Nothing
        Set conexion 
Nothing    %> 
Ahora, como no, tengo otro problema y es que estoy intentando perfeccionarlo para que no te obligue a editar siempre las 2 fotos, es decir que te deje editar sólo la primera, sólo la segunda o ninguna de ellas.
De momento sólo he conseguido que me deje editar la primera sin tener que editar la segunda pero aunque estoy seguro de que será una tontería me estoy atascando con los if, los else las declaraciones de variables. Ahora lo tengo así:

Código PHP:
<!--#include file="includes/xelupload.asp"-->

        
<%
        
id session("id")
        
'Primero subimos el fichero:'
        
Dim upobjobj2
        set up 
= new xelUpload
        up
.Upload()            
        
      
set obj up.Ficheros("fichero")    
        
      
nombreFoto=obj.nombre
      
'Comprobamos si nos han subido el primer fichero:' 
      
if (len(nombreFoto) > 0then
      obj
.Guardar(Server.MapPath("caratulas/"))    
    
      
set obj2 up.Ficheros("fichero2")
      
'Comprobamos si nos han subido el segundo fichero:'

      
nombreFoto2=obj2.nombre 
      
else if (len(nombreFoto2) > 0then
      obj2
.Guardar(Server.MapPath("miniaturas/"))
      
      
end if
      
end if
       %> 
Si véis el error muy claro y me lo podéis decir os lo agradecería sino seguiré dandole vueltas mañana a ver si doy con la forma de hacerlo bien.
  #12 (permalink)  
Antiguo 19/12/2008, 20:04
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 17 años, 3 meses
Puntos: 88
Respuesta: asp subir archivos o foto



mira, ve la logica del problema

necesitas subir los archivos, antes de editarlos y no al mismo tiempo

1.- subes el/los archivos
2.- compruebas los datos con FSO
3.- despliegas mediante FSO los archivos
4.- permites que elija uno
5.- modificacion del archivo

listo

velo como procesos separados y no como uno solo que tenga que hacerse al mismo tiempo aunque sea la misma pagina ok???

para esto es mas sencillo si todo lo haces como funciones, asi evitaras todo esto.... para que al utilizar un "select case", puedas definir las acciones a realizar... por ejemplo

Cita:
select case accion
case "subir" subir()
case "modificar" funcionmodificar(archivo)
end select
algo asi de logica brindale a tu codigo, y te ayudara al momento de Depurar

ok?
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #13 (permalink)  
Antiguo 21/12/2008, 14:30
 
Fecha de Ingreso: junio-2008
Mensajes: 145
Antigüedad: 16 años
Puntos: 0
Respuesta: asp subir archivos o foto

Hola Shiryu_Libra,

Estoy intentando seguir los pasos que me has dicho poco a poco, el caso es que todavía tengo que entender un poco mejor el xelupload y sus funciones para poder separar sus funciones.

Entiendo lo que dices de que primero tengo que subir los ficheros (o intentarlo al menos) y luego una vez subidos hacer lo demás. Pero he intentando hacer una prueba un poco básica, es decir: primero subir los archivos y después de haber editado o no los campos de texto, ver si se ha subido algun archivo: "if (len(nombreFoto) > 0)" y en caso de que sea así actualizar las base de datos y guardar el fichero en la carpeta de imágenes correspondiente. Intentando hacerlo así me da un error:

Código PHP:
Error de Microsoft VBScript en tiempo de ejecución (0x800A01A8)
Se requiere un objeto'[undefined]' 
Según he leido por ahi es un error que da cuando se sube un archivo vacío.

De todas formas no se si será por como es mi xelupload o por que pero el FSo que comentas en mi archivo de xelpuload aparece en: Public Sub Guardar(ruta) y en Public Sub GuardarComo(nombrefichero, ruta). Es decir que el Fso comprueba el archivo justo antes de guardarlo en la carpeta correspondiente.

Cuando dices "3.- despliegas mediante FSO los archivos" ¿a qué te refieres exactamente? Esa parte no la he entendido bien.

Gracias por tu paciencia.
  #14 (permalink)  
Antiguo 21/12/2008, 21:46
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 17 años, 3 meses
Puntos: 88
Respuesta: asp subir archivos o foto

Cita:
Iniciado por haga41 Ver Mensaje
Hola Shiryu_Libra,


Cita:
Iniciado por haga41 Ver Mensaje
De todas formas no se si será por como es mi xelupload o por que pero el FSo que comentas en mi archivo de xelpuload aparece en: Public Sub Guardar(ruta) y en Public Sub GuardarComo(nombrefichero, ruta). Es decir que el Fso comprueba el archivo justo antes de guardarlo en la carpeta correspondiente.
podrias utilizar el guardarcomo, para renombrarlo directamente, ya que este te da la oportunidad de renombrarlo en el mismo procedimiento de carga del archivo
Cita:
Iniciado por haga41 Ver Mensaje
Cuando dices "3.- despliegas mediante FSO los archivos" ¿a qué te refieres exactamente? Esa parte no la he entendido bien.
.... una funcion sencillita seria asi
Código ASP:
Ver original
  1. sub ListFolderContents(path)
  2.     dim fs, folder, file, item, url
  3.     set fs = CreateObject("Scripting.FileSystemObject")
  4.     set folder = fs.GetFolder(path)
  5.     'Muestro la info de la carpeta (si quiero)
  6.     'Response.Write("<li><b>" & folder.Name & "</b> - " _
  7.     ' & folder.Files.Count & " files, ")
  8.     'Response.Write(Round(folder.Size / 1024) & " KB total." _
  9.     ' & vbCrLf)
  10.     'nothing there.. print
  11.     if folder.Files.Count = 0 then
  12.         Response.Write    "<table border=""0"""&_
  13.                         "cellspacing=""1"" cellpadding=""2"""&_
  14.                         "><tr><td>Este archivo no se ha subido.</td></tr></table>"
  15.     else
  16.         '    Response.Write("" & vbCrLf)
  17.    
  18.  
  19.         'Display a list of sub folders.
  20.         for each item in folder.SubFolders
  21.             ListFolderContents(item.Path)
  22.         next
  23.         'Display a list of files.
  24.         Response.Write    "<table border=""0"" cellspacing=""1"" cellpadding=""2"">"&_
  25.                         "<tr>"&_
  26.                         "<td>Nombre del archivo</td>"&_
  27.                         "<td>Tamaño</td>"&_
  28.                         "<td>Contenido</td>"&_
  29.                         "<td>Fecha de Modificacion</td>"&_
  30.                         "<td>Borrar</td>"&_
  31.                         "</tr></table>"
  32.  
  33. '"Attributes,DateCreated,DateLastAccessed,DateLastModified,Drive,Name,ParentFolder,Path,ShortName,ShortPath,Size,Type"
  34.         response.Write "<table>"
  35.         for each item in folder.Files
  36.             if fs.GetExtensionName(item)="txt" then
  37.                 url = MapURL(item.path)
  38.                 nami = item.name
  39.                 getDeleteLink = Server.Urlencode(item.name)
  40.                 Response.Write    "<tr><td><a href="&_
  41.                                 unescape(url) & " target=_blank>" &_
  42.                                 item.Name & "</a></td><td>" &_
  43.                                 item.Size & " (Bytes)</td>" &_
  44.                                 "<td>" & leer(fs,item) & "</td>"&_
  45.                                 "<td>" & dateValue(item.DateLastModified) & "</td>"&_
  46.                                 "<td><a href=" & pagina & "?file=" &_
  47.                                 unescape(getDeleteLink) & "> Delete this file </a>" &_
  48.                                 "</td></tr>"'<br />"
  49.             end if
  50.         next
  51.         Response.Write("</table>")
  52.     end if
  53. end sub
Cita:
Iniciado por haga41 Ver Mensaje
Gracias por tu paciencia.
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #15 (permalink)  
Antiguo 22/12/2008, 08:46
 
Fecha de Ingreso: junio-2008
Mensajes: 145
Antigüedad: 16 años
Puntos: 0
Respuesta: asp subir archivos o foto

Gracias por responder tan pronto,

Creo que cada vez me lio más yo solo pero bueno.
Si lo he entendido bien la función que me has puesto en el último mensaje sirve para desplegar mediante FSO los archivos que he subido en el formulario de la página anterior, que en mi caso serían fichero y fichero2. Pero de momento para hacerlo más sencillo pongamos que sólo puedo subir uno cuyo id y name es fichero.

Según veo la función ListFolderContents comprobaría la carpeta en la que se guardan los archivos que acabo de subir. Es decir primero iría el Guardar o GuardarComo que hemos dicho antes y una vez prefijada una ruta, el ListFolderContents buscaría en ella el fichero que acabamos de subir. En acaso de que lo hayamos subido nos mostraría sus características en una tabla, si no lo hemos subido nos mostraría el mensaje "Este archivo no se ha subido." en una tabla. Es decir según he entendido, creo que algo se me ha escapado pero bueno sería algo así.

Código:
<!--#include file="includes/xelupload.asp"-->
     <%
        id = session("id")
        'Primero subimos el fichero:'
        Dim up, obj
        set up = new xelUpload
        up.Upload()            
        
set obj = up.Ficheros("fichero")      
nombreFoto=obj.nombre


obj.GuardarComo nombreFoto, Server.MapPath("caratulas/") 
ListFolderContents(nombreFoto.Server.MapPath("caratulas/"))
       %>
La función ListFolderContents la llamo desde ahí porque la he incluido como Public justo antes del End class en el xelupload.asp.

Cuando ejecuto esto, subiendo el archivo 262.jpg, me da un error diciendo:

Error de Microsoft VBScript en tiempo de ejecución (0x800A01A8)
Se requiere un objeto: '262.jpg'
/pelis2/registrarficha.asp, línea 24


Es decir, el archivo se guarda perfectamente con ese nombre en su carpeta correspondiente pero el ListFolderContents no me lo reconoce si se lo escribo así, a pesar de que existe una archivo 262.jpg en la carpeta que está buscando. De todas formas si entiendo bien como funciona lo que estoy intentando, no se si la función ListFolderContents sirve para comprobar si se ha subido un fichero o no, ya que tal y como está ahora si no subo ningún fichero me da error bastante antes de poder usar esa función justo en al línea de "set obj = up.Ficheros("fichero") " quizás necesite algo tipo: if exists (up.Ficheros("fichero") then o algo así.

He probado el código usé antes adaptado y consigue arreglarme el problema si sólo subo un fichero, pero tal y como está no me sirve para guardar 2 ficheros en 2 carpetas seleccionadas, este es el código:
Código PHP:
     <%
        
id session("id")
        
'Primero subimos el fichero:
        Dim up, obj
        set up = new xelUpload

        up.Upload()
        ficheroSeleccionado = False
        
        For each obj in up.Ficheros.Items
        '
Para guardarlo
            ficheroSeleccionado 
True
            nombreFoto
=obj.nombre
            Con el nombre de fichero original
:
            
obj.GuardarComo nombreFotoServer.MapPath("caratulas/")         
        
Next
   
%> 
  #16 (permalink)  
Antiguo 22/12/2008, 15:29
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 5 meses
Puntos: 126
Respuesta: asp subir archivos o foto

Hola

ListFolderContents(nombreFoto.Server.MapPath("caratulas/"))

Estas tratando nombreFoto como si fuese un objeto, cuando es una variable

Prueba así

ListFolderContents(Server.MapPath("caratulas/") & nombreFoto)


Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #17 (permalink)  
Antiguo 22/12/2008, 15:50
 
Fecha de Ingreso: junio-2008
Mensajes: 145
Antigüedad: 16 años
Puntos: 0
Respuesta: asp subir archivos o foto

Gracias por tu ayuda Adler,

Lo he probado como tu dices y me da como error: No coinciden los tipos: 'ListFolderContents' Lo he mirado y la función ListFolderContets esta declarada como Public Sub ListFolderContents(path) en el xelupload.
  #18 (permalink)  
Antiguo 23/12/2008, 05:52
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 5 meses
Puntos: 126
Respuesta: asp subir archivos o foto

Hola

Abría que ver el sub, pero antes puede hacer esta otra prueba

ListFolderContents(Server.MapPath("caratulas"))

El sub ha de contener algo como

Código asp:
Ver original
  1. Set objFSO = CreateObject("Scripting.FileSystemObject")
  2. Set objFolder = objFSO.GetFolder(path)
  3. Set colFiles = objFolder.Files
  4. For Each objFile in colFiles
  5. ......
  6. Next

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #19 (permalink)  
Antiguo 23/12/2008, 07:45
 
Fecha de Ingreso: junio-2008
Mensajes: 145
Antigüedad: 16 años
Puntos: 0
Respuesta: asp subir archivos o foto

Hola Adler

El Sub que tengo dentro del xelupload.asp ahora mismo es este:

Código asp:
Ver original
  1. Public Sub ListFolderContents(path)
  2.           dim objFSO, objFolder, colfiles
  3.          
  4.         Set objFSO = CreateObject("Scripting.FileSystemObject")
  5.         Set objFolder = objFSO.GetFolder(path)
  6.         Set colFiles = objFolder.Files
  7.  
  8.           'Muestro la info de la carpeta (si quiero)
  9.           'Response.Write("<li><b>" & folder.Name & "</b> - " _
  10.           ' & folder.Files.Count & " files, ")
  11.           'Response.Write(Round(folder.Size / 1024) & " KB total." _
  12.           ' & vbCrLf)
  13.           'nothing there.. print
  14.           if colFiles.Count = 0 then
  15.               Response.Write    "<table border=""0"""&_
  16.                               "cellspacing=""1"" cellpadding=""2"""&_
  17.                               "><tr><td>Este archivo no se ha subido.</td></tr></table>"
  18.           else
  19.               '    Response.Write("" & vbCrLf)
  20.               'Display a list of sub folders.
  21.               For Each objFile in colFiles
  22.                        ListFolderContents(item.Path)
  23.               next
  24.               'Display a list of files.
  25.               Response.Write    "<table border=""0"" cellspacing=""1"" cellpadding=""2"">"&_
  26.                               "<tr>"&_
  27.                               "<td>Nombre del archivo</td>"&_
  28.                               "<td>Tamaño</td>"&_
  29.                               "<td>Contenido</td>"&_
  30.                               "<td>Fecha de Modificacion</td>"&_
  31.                               "<td>Borrar</td>"&_
  32.                               "</tr></table>"
  33.  
  34.           end if
  35.       end sub

Y también he puesto: ListFolderContents(Server.MapPath("caratulas")) como me has indicado pero de momento sigue dandome el mismo error si intento subir el archivo: No coinciden los tipos: 'ListFolderContents' y si no subo ningún archivo ni edito nada: Se requiere un objeto: '[undefined]'

El Sub contenía la función que me dió Shiryu_Libra modificada com Public Sub:

Código asp:
Ver original
  1. Public sub ListFolderContents(path)
  2.           dim fs, folder, file, item, url
  3.           set fs = CreateObject("Scripting.FileSystemObject")
  4.           set folder = fs.GetFolder(path)
  5.           'Muestro la info de la carpeta (si quiero)
  6.           'Response.Write("<li><b>" & folder.Name & "</b> - " _
  7.           ' & folder.Files.Count & " files, ")
  8.           'Response.Write(Round(folder.Size / 1024) & " KB total." _
  9.           ' & vbCrLf)
  10.           'nothing there.. print
  11.           if folder.Files.Count = 0 then
  12.               Response.Write    "<table border=""0"""&_
  13.                               "cellspacing=""1"" cellpadding=""2"""&_
  14.                               "><tr><td>Este archivo no se ha subido.</td></tr></table>"
  15.           else
  16.               '    Response.Write("" & vbCrLf)
  17.               'Display a list of sub folders.
  18.               for each item in folder.SubFolders
  19.                   ListFolderContents(item.Path)
  20.               next
  21.               'Display a list of files.
  22.               Response.Write    "<table border=""0"" cellspacing=""1"" cellpadding=""2"">"&_
  23.                               "<tr>"&_
  24.                               "<td>Nombre del archivo</td>"&_
  25.                               "<td>Tamaño</td>"&_
  26.                               "<td>Contenido</td>"&_
  27.                               "<td>Fecha de Modificacion</td>"&_
  28.                               "<td>Borrar</td>"&_
  29.                               "</tr></table>"      '"Attributes,DateCreated,DateLastAccessed,DateLastModified,Drive,Name,ParentFolder,Path,ShortName,ShortPath,Size,Type"
  30.               response.Write "<table>"
  31.               for each item in folder.Files
  32.                   if fs.GetExtensionName(item)="txt" then
  33.                       url = MapURL(item.path)
  34.                       nami = item.name
  35.                       getDeleteLink = Server.Urlencode(item.name)
  36.                         Response.Write    "<tr><td><a href="&_
  37.                                       unescape(url) & " target=_blank>" &_
  38.                                       item.Name & "</a></td><td>" &_
  39.                                       item.Size & " (Bytes)</td>" &_
  40.                                       "<td>" & leer(fs,item) & "</td>"&_
  41.                                       "<td>" & dateValue(item.DateLastModified) & "</td>"&_
  42.                                       "<td><a href=" & pagina & "?file=" &_
  43.                                       unescape(getDeleteLink) & "> Delete this file </a>" &_
  44.                                       "</td></tr>"'<br />"
  45.                   end if
  46.               next
  47.               Response.Write("</table>")
  48.           end if
  49.       end sub
  #20 (permalink)  
Antiguo 23/12/2008, 14:02
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 5 meses
Puntos: 126
Respuesta: asp subir archivos o foto

Hola

Pongamos que el sub esta en class Ficheros

Prueba esto

obj.ListFolderContents(Server.MapPath("caratulas") )

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #21 (permalink)  
Antiguo 24/12/2008, 11:51
 
Fecha de Ingreso: junio-2008
Mensajes: 145
Antigüedad: 16 años
Puntos: 0
Respuesta: asp subir archivos o foto

Hola Adler,

Lo primero de todo,

¡Feliz navidad y un próspero año nuevo para ti y para todos!

Sobre lo último que me comentas dentro del archivo xelupload.asp, hay un Sub Ficheros. De todas formas he creado un class Ficheros después del Class xelupload y mi fichero de xelupload.asp queda así:

Código asp:
Ver original
  1. <% Class xelUpload
  2. ' Maneja los formularios enviados como 'multipart/form-data' (ficheros)
  3.  
  4. Public Ficheros
  5. Private eltosForm
  6.  
  7. '------------------------------------------------------------------------
  8. Private Sub Class_Initialize()
  9.     set Ficheros = Server.CreateObject("Scripting.Dictionary")
  10.     set eltosForm = Server.CreateObject("Scripting.Dictionary")
  11. End Sub
  12. '------------------------------------------------------------------------
  13. Private Sub Class_Terminate()
  14.     if IsObject(Ficheros) then
  15.         Ficheros.RemoveAll
  16.         set Ficheros = nothing
  17.     end if
  18.     if IsObject(eltosForm) then
  19.         eltosForm.RemoveAll
  20.         set eltosForm = nothing
  21.     end if
  22. End Sub
  23. '------------------------------------------------------------------------
  24. 'Permite hacer, por ejemplo: Response.Write(upload.Form("nombre"))
  25. Public Property Get Form(campo)
  26.     if eltosForm.Exists(campo) then
  27.         Form = eltosForm.Item(campo)
  28.     else
  29.         Form = ""
  30.     end if
  31. End Property
  32. '------------------------------------------------------------------------
  33. Public Sub Upload()
  34. 'Inicia el proceso. Debe llamarse ANTES DE HACER CUALQUIER OTRA COSA
  35.  
  36. Dim byteDatos, strControl
  37. Dim iPosInicio, iPosFin, iPos, byteLimite, posLimite
  38. Dim iPosFich, iPosLim
  39.  
  40. byteDatos = Request.BinaryRead(Request.TotalBytes)
  41. iPosInicio = 1
  42. iPosFin = InStrB(iPosInicio, byteDatos, str2byte(chr(13)))
  43. if (iPosFin-iPosInicio) <= 0 then
  44. 'terminamos, no hay nada que leer
  45.     Exit Sub
  46. end if
  47. 'extraemos el limite de principio y fin de los datos (p.e. -----2323g237623)
  48. byteLimite = MidB(byteDatos, iPosInicio, iPosFin-iPosInicio)
  49. posLimite = InStrB(1, byteDatos, byteLimite)
  50.  
  51. 'terminamos cuando la posición del próximo límite sea igual
  52. 'a la del límite final, que lleva "--" detrás.
  53. do until posLimite = InStrB(byteDatos, byteLimite & str2byte("--"))
  54.  
  55.     iPos = InStrB(posLimite, byteDatos, str2byte("Content-Disposition"))
  56.     iPos = InStrB(iPos, byteDatos, str2byte("name=")) 'nombre del control en <FORM>
  57.     iPosInicio = iPos + 6 'me salto 6 caracteres -> name="
  58.     iPosFin = InStrB(iPosInicio, byteDatos, str2byte(chr(34))) 'busco las comillas de cierre
  59.     'y tengo el nombre del control!
  60.     strControl = byte2str(MidB(byteDatos, iPosInicio, iPosFin-iPosInicio))
  61.     'busco ahora los datos en sí del control
  62.     iPosFich =InStrB(posLimite, byteDatos, str2byte("filename="))
  63.     posLimite = InStrB(iPosFin, byteDatos, byteLimite)
  64.    
  65.     '¿fichero o campo del formulario?
  66.     if iPosFich <> 0 and iPosFich < PosLimite then
  67.         'es un fichero, creo un nuevo objeto fichero y lo añado a Ficheros
  68.         Dim oFichero, strNombre, strForm
  69.         set oFichero = new Fichero
  70.        
  71.         iPosInicio = iPosFich + 10 'me salto 10 caracteres -> filename="
  72.         iPosFin = InStrB(iPosInicio, byteDatos, str2byte(chr(34)))
  73.         strNombre = byte2str(MidB(byteDatos, iPosInicio, iPosFin-iPosInicio))
  74.         'quito la ruta inicial
  75.         oFichero.Nombre = Right(strNombre, Len(strNombre)-InStrRev(strNombre, "\")) '"
  76.        
  77.         iPos = InStrB(iPosFin, byteDatos, str2byte("Content-Type:"))
  78.         iPosInicio = iPos + 14 'me salto Content-Type y un espacio!!
  79.         iPosFin = InStrB(iPosInicio, byteDatos, str2byte(chr(13))) 'busco el retorno de carro
  80.         oFichero.TipoContenido = byte2str(MidB(byteDatos, iPosInicio, iPosFin-iPosInicio))
  81.        
  82.         iPosInicio = iPosFin + 4    'me salto los 3 retornos de carro que lleva!!!
  83.         iPosFin = InStrB(iPosInicio, byteDatos, byteLimite)-2 'dos caracteres atrás
  84.         oFichero.Datos = MidB(byteDatos, iPosInicio, iPosFin-iPosInicio)
  85.         if oFichero.Tamano > 0 then 'lo añado a la colección Ficheros!
  86.             Ficheros.Add strControl, oFichero
  87.         end if
  88.     else
  89.         'es un campo del formulario
  90.         iPos = InStrB(iPos, byteDatos, str2byte(chr(13)))
  91.         iPosInicio = iPos + 4
  92.         iPosFin = InStrB(iPosInicio, byteDatos, byteLimite)-2
  93.         'extraigo el valor del control del formulario!
  94.         strForm = byte2str(MidB(byteDatos, iPosInicio, iPosFin-iPosInicio))
  95.         if not eltosForm.Exists(strControl) then
  96.             eltosForm.Add strControl, strForm
  97.         else
  98.             eltosForm.Item(strControl) =  eltosForm.Item(strControl)+","&strForm
  99.         end if
  100.     end if
  101.     'saltamos al siguiente límite
  102.     iPosLimite = InStrB(iPosLimite+LenB(byteLimite), byteDatos, byteLimite)
  103.    
  104.     loop
  105.    
  106. End Sub
  107. '------------------------------------------------------------------------
  108. Private Function str2byte ( str )
  109. Dim i, strbuf
  110. for i = 1 to Len(str)
  111.     strbuf = strbuf & ChrB(AscB(Mid(str, i, 1)))
  112. next
  113. str2byte = strbuf
  114. End Function
  115. '------------------------------------------------------------------------
  116. Private Function byte2str ( bin )
  117. Dim i, bytebuf
  118. for i = 1 to LenB(bin)
  119.     bytebuf = bytebuf & Chr(AscB(MidB(bin, i, 1)))
  120. next
  121. byte2str = bytebuf
  122. End Function
  123. '------------------------------------------------------------------------
  124. End Class
  125.  
  126. '############################ Clase Fichero!!! ##########################
  127.  
  128. Class Fichero
  129. '------------------------------------------------------------------------
  130. Public Nombre
  131. Public TipoContenido
  132. Public Datos
  133.  
  134. '------------------------------------------------------------------------
  135. Public Property Get Tamano()
  136.     Tamano = LenB(Datos)
  137. End Property
  138. '------------------------------------------------------------------------
  139.  
  140.  
  141.  
  142. Public Sub Guardar(ruta)
  143. Dim oFSO, oFich
  144. Dim i
  145.  
  146. if ruta = "" or Nombre = "" then Exit Sub
  147. if Mid(ruta, Len(ruta)) <> "\" then     '" 
  148.     'añado la ultima barra a la ruta
  149.     ruta = ruta & "\"                       '"
  150. end if
  151.  
  152. set oFSO = Server.CreateObject("Scripting.FileSystemObject")
  153. if not oFSO.FolderExists(ruta) then Exit Sub
  154. set oFich = oFSO.CreateTextFile(ruta & Nombre, true)
  155.  
  156. for i = 1 to LenB(Datos)
  157.     oFich.Write Chr(AscB(MidB(Datos, i, 1)))
  158. next    
  159.  
  160. oFich.Close
  161. set oFSO = nothing
  162. End Sub
  163. '------------------------------------------------------------------------
  164. '------------------------------------------------------------------------
  165. Public Sub GuardarComo(nombrefichero, ruta)
  166. Dim oFSO, oFich, i
  167.  
  168. if ruta = "" or nombrefichero = "" then Exit Sub
  169. if Mid(ruta, Len(ruta)) <> "\" then     '" 
  170.     'añado la ultima barra a la ruta
  171.     ruta = ruta & "\"                       '"
  172. end if
  173.  
  174. set oFSO = Server.CreateObject("Scripting.FileSystemObject")
  175. if not oFSO.FolderExists(ruta) then Exit Sub
  176. set oFich = oFSO.CreateTextFile(ruta & nombrefichero, true)
  177.  
  178. for i = 1 to LenB(Datos)
  179.     oFich.Write Chr(AscB(MidB(Datos, i, 1)))
  180. next    
  181.  
  182. oFich.Close
  183. set oFSO = nothing
  184.  
  185.  
  186. End Sub
  187. '------------------------------------------------------------------------
  188. Public Sub GuardarBD (byRef field)
  189. if LenB(Datos) = 0 then Exit Sub
  190.  
  191. field.AppendChunk Datos
  192. End Sub
  193.  
  194.  
  195. '------------------------------------------------------------------------
  196.  
  197.  
  198.  
  199. '---------------------------------
  200. End Class
  201. %>
  202.  
  203. <% Class Ficheros
  204. Public Sub ListFolderContents(path)
  205.           dim objFSO, objFolder, colfiles
  206.          
  207.         Set objFSO = CreateObject("Scripting.FileSystemObject")
  208.         Set objFolder = objFSO.GetFolder(path)
  209.         Set colFiles = objFolder.Files
  210.  
  211.           'Muestro la info de la carpeta (si quiero)
  212.           'Response.Write("<li><b>" & folder.Name & "</b> - " _
  213.           ' & folder.Files.Count & " files, ")
  214.           'Response.Write(Round(folder.Size / 1024) & " KB total." _
  215.           ' & vbCrLf)
  216.           'nothing there.. print
  217.           if colFiles.Count = 0 then
  218.               Response.Write    "<table border=""0"""&_
  219.                               "cellspacing=""1"" cellpadding=""2"""&_
  220.                               "><tr><td>Este archivo no se ha subido.</td></tr></table>"
  221.           else
  222.               '    Response.Write("" & vbCrLf)
  223.               'Display a list of sub folders.
  224.               For Each objFile in colFiles
  225.                        ListFolderContents(item.Path)
  226.               next
  227.               'Display a list of files.
  228.               Response.Write    "<table border=""0"" cellspacing=""1"" cellpadding=""2"">"&_
  229.                               "<tr>"&_
  230.                               "<td>Nombre del archivo</td>"&_
  231.                               "<td>Tamaño</td>"&_
  232.                               "<td>Contenido</td>"&_
  233.                               "<td>Fecha de Modificacion</td>"&_
  234.                               "<td>Borrar</td>"&_
  235.                               "</tr></table>"
  236.  
  237.           end if
  238.       end sub
  239. End class
  240. %>

Después en el otro archivo en el que llamo a la clase Ficheros lo he puesto así:

Código asp:
Ver original
  1. <!--#include file="includes/xelupload.asp"-->
  2.      <%
  3.         id = session("id")
  4.         'Primero subimos el fichero:'
  5.         Dim up, obj
  6.         set up = new xelUpload
  7.         up.Upload()            
  8.        
  9. set obj = up.Ficheros("fichero")      
  10. nombreFoto=obj.nombre
  11.  
  12.  
  13. obj.GuardarComo nombreFoto, Server.MapPath("caratulas/")
  14. obj.ListFolderContents(Server.MapPath("caratulas/") )
  15.        %>

Pero sigue dandome los mismos errores que antes si no subo ninguna foto, me da error de undefined en la línea de: set obj = up.Ficheros("fichero") y si subo foto me da error en el ListFolder con= Error de Microsoft VBScript en tiempo de ejecución (0x800A01B6)
El objeto no acepta esta propiedad o método: 'ListFolderContents'

De todas formas, gracias por la ayuda, ahora mismo lo importante es disfrutar todo lo que se pueda de estos días. Esto se ya se irá arreglando poco a poco, seguro que al final será una tontería pero cuesta averiguar donde está el fallo.

¡Felices fiestas!
  #22 (permalink)  
Antiguo 25/12/2008, 17:00
 
Fecha de Ingreso: junio-2008
Mensajes: 145
Antigüedad: 16 años
Puntos: 0
Respuesta: asp subir archivos o foto

Hola otra vez,

He estado mirando temas similares y he visto este:
http://www.forosdelweb.com/f15/agreg...upload-257830/

Haciendo lo que pone ahí y adaptandolo a mi caso me sirve para subir las 2 fotos o no subir ninguna foto pero me da error si sólo subo una de ellas. La persona que abrió ese post tiene el mismo problema.

Este es mi código ahora mismo:
Código asp:
Ver original
  1. <!--#include file="includes/xelupload.asp"-->
  2.      <%
  3.         id = session("id")
  4.         'Primero subimos el fichero:'
  5.         Dim up, objFich, objFich2
  6.         set up = new xelUpload
  7.         up.Upload()
  8.          
  9.        
  10.         if up.Ficheros.Count = 0 then
  11.         Response.Write("¡No has subido ningún fichero!")
  12. else    
  13.    
  14.         if (up.Ficheros("fichero") = true) then
  15.             set objFich = up.Ficheros("fichero")
  16.             nombreFoto=objFich.nombre
  17.             objFich.Guardar(Server.MapPath("caratulas/"))
  18.         'else
  19.         'If ISObject(up.Ficheros.("fichero2")) then '  
  20.             'set objFich2 = up.Ficheros("fichero2")
  21.             'nombreFoto2=objFich2.nombre
  22.             'objFich2.Guardar(Server.MapPath("miniaturas/"))
  23.        
  24.         end if
  25.         end if
  26. %>

Y al final

Código asp:
Ver original
  1. <%
  2. if (len(nombreFoto) > 0) then
  3.             tabla.fields("Foto") = nombreFoto
  4.         end if
  5.        
  6.        ' if (len(nombreFoto2) > 0) then
  7.         '    tabla.fields("Miniatura") = nombreFoto2
  8.         'end if
  9.                
  10.         tabla.update
  11.         tabla.close        
  12.         conexion.close
  13.         set up = nothing
  14.         Set tabla = Nothing
  15.         Set conexion = Nothing    
  16.        
  17.         %>  
  18.         Ficha actualizada. <a href="Adminficha.asp">Continuar</a>.

De esta forma si subo el primer fichero me dice en la línea en la que sale esto:
if (up.Ficheros("fichero") = true) then


Error de Microsoft VBScript en tiempo de ejecución (0x800A01B6)
El objeto no acepta esta propiedad o método

Última edición por haga41; 25/12/2008 a las 17:51
  #23 (permalink)  
Antiguo 26/12/2008, 07:55
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 5 meses
Puntos: 126
Respuesta: asp subir archivos o foto

Hola

Bien, tienes dos problemas, y estás intentando atacar a los dos. Céntrate en uno y después ataca al otro. Centrémonos en al que te ocupa en tu último post

Cambia esto

Cita:
if (up.Ficheros("fichero") = true) then

set objFich = up.Ficheros("fichero")

nombreFoto=objFich.nombre

objFich.Guardar(Server.MapPath("caratulas/"))

'else

'If ISObject(up.Ficheros.("fichero2")) then '

'set objFich2 = up.Ficheros("fichero2")

'nombreFoto2=objFich2.nombre

'objFich2.Guardar(Server.MapPath("miniaturas/"))

end if
por

Código asp:
Ver original
  1. if vartype(up.Fichero("fichero"))<>0 then
  2. set objFich1 = up.Fichero("fichero")
  3. objFich.Guardar(Server.MapPath("caratulas/"))
  4. end if
  5.  
  6.  
  7. if vartype(up.Fichero("fichero2"))<>0 then
  8. set objFich2 = up.Fichero("fichero2")
  9. objFich2.Guardar(Server.MapPath("caratulas/"))
  10. end if

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />

Última edición por Adler; 26/12/2008 a las 08:03
  #24 (permalink)  
Antiguo 26/12/2008, 08:06
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 5 meses
Puntos: 126
Respuesta: asp subir archivos o foto

Con respecto al otro problema

No entiendo por que creas una nueva clase (Ficheros). Inserta la función en la clase (Fichero)

Prueba así

objFich1.ListFolderContents(Server.MapPath("caratu las/"))

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #25 (permalink)  
Antiguo 28/12/2008, 13:18
 
Fecha de Ingreso: junio-2008
Mensajes: 145
Antigüedad: 16 años
Puntos: 0
Respuesta: asp subir archivos o foto

Hola Adler,

Gracias por tus respuestas, poniendolo de la forma que tú dices va perfecto.
Lo de Ficheros lo he puesto como tu decías y me ha dado un error porque me pedía un Item así que he cambiado esto:

Código asp:
Ver original
  1. For Each objFile in colFiles
  2.                        ListFolderContents(item.Path)

por esto


Código asp:
Ver original
  1. For Each item in objFolder.Subfolders
  2.                        ListFolderContents(item.Path)

Y ya va bien.

Una duda que no se si tiene que ver con Access o con asp es que cuando creo o edito una ficha, los acentos y las eñes no las crea bien cosa que si hago directamente desde Access no me ocurre. He puesto lo de UTF-8 en todas las páginas y he puesto: accept-charset="UTF-8" en los formularios pero me siguen saliendo mal las eñes y los acentos. Supongo que lo que me falta es convertir los accesos mediante Sql a UTF-8 pero no se como hacerlo.
  #26 (permalink)  
Antiguo 29/12/2008, 06:39
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 5 meses
Puntos: 126
Respuesta: asp subir archivos o foto

Hola

Podrías usar entidades html

Código asp:
Ver original
  1. Public Function Remplaza(limpia,caso)    
  2. Dim cadena
  3.  
  4.     cadena = trim(limpia)
  5.    
  6.     Select Case caso
  7.  
  8.     Case 0:
  9.  
  10.         cadena = replace(cadena,"'","'")
  11.         cadena = replace(cadena,"¿","&iquest;")
  12.         cadena = replace(cadena,"¡","&iexcl;")
  13.         cadena = replace(cadena,"ñ","&ntilde;")
  14.         cadena = replace(cadena,"Ñ","&Ntilde;")
  15.         cadena = replace(cadena,"á","&aacute;")
  16.         cadena = replace(cadena,"Á","&Aacute;")
  17.         cadena = replace(cadena,"é","&eacute;")
  18.         cadena = replace(cadena,"É","&Eacute;")
  19.         cadena = replace(cadena,"í","&iacute;")
  20.         cadena = replace(cadena,"Í","&Iacute;")
  21.         cadena = replace(cadena,"ó","&oacute;")
  22.         cadena = replace(cadena,"Ó","&Oacute;")
  23.         cadena = replace(cadena,"ú","&uacute;")
  24.         cadena = replace(cadena,"Ú","&Uacute;")
  25.        
  26.     Case Else
  27.         cadena = limpia
  28.     End Select
  29.  
  30.     Remplaza = cadena
  31.  
  32. End Function

Uso

Reemplaza(Request.Form("str"),0) ' Al subir el valor a la bd

También podrías usar las funciones escape y unescape

Uso

Código asp:
Ver original
  1. escape(Request.Form("str")) ' Para subirlo a la bd
  2. unescape(rs.field("campo")) ' Al recepcionar el campo

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #27 (permalink)  
Antiguo 29/12/2008, 11:53
 
Fecha de Ingreso: junio-2008
Mensajes: 145
Antigüedad: 16 años
Puntos: 0
Respuesta: asp subir archivos o foto

Hola Adler,

Muchas gracias por tu ayuda,

He intentado usar los métodos que me has dicho adaptandolos a la forma en que tenía yo el archivo y creo que para varias me he complicado la vida, el caso es que tal y como está parece que funciona en modo local pero no se porque los acentos se ven bien en Firefox y en Explorer, los acentos y eñes que he metido directamente desde Access se ven bien en los 2. En cambio cuando lo he subido al servidor ni siquiera se me ve bien en Firefox después de editar y he subido exactamente el mismo archivo no se que puede fallar.


Código asp:
Ver original
  1. <% Public Function Remplaza(limpia,caso)    
  2.       Dim cadena
  3.           cadena = trim(limpia)
  4.           Select Case caso
  5.           Case 0:
  6.               cadena = replace(cadena,"'","'")
  7.               cadena = replace(cadena,"¿","&iquest;")
  8.               cadena = replace(cadena,"¡","&iexcl;")
  9.               cadena = replace(cadena,"ñ","&ntilde;")
  10.               cadena = replace(cadena,"Ñ","&Ntilde;")
  11.               cadena = replace(cadena,"á","&aacute;")
  12.               cadena = replace(cadena,"Á","&Aacute;")
  13.               cadena = replace(cadena,"é","&eacute;")
  14.               cadena = replace(cadena,"É","&Eacute;")
  15.               cadena = replace(cadena,"í","&iacute;")
  16.               cadena = replace(cadena,"Í","&Iacute;")
  17.               cadena = replace(cadena,"ó","&oacute;")
  18.               cadena = replace(cadena,"Ó","&Oacute;")
  19.               cadena = replace(cadena,"ú","&uacute;")
  20.               cadena = replace(cadena,"Ú","&Uacute;")
  21.           Case Else
  22.               cadena = limpia
  23.           End Select
  24.           Remplaza = cadena
  25.       End Function
  26. %>
  27.      <%
  28.         id = session("id")
  29.         Dim up, objFich1, objFich2
  30.         set up = new xelUpload
  31.         up.Upload()
  32.          
  33.       if vartype(up.Ficheros("fichero"))<>0 then
  34.       set objFich1 = up.Ficheros("fichero")
  35.       objFich1.ListFolderContents(Server.MapPath("caratulas/"))
  36.       nombreFoto=objFich1.nombre
  37.       end if
  38.  
  39.       if vartype(up.Ficheros("fichero2"))<>0 then
  40.       set objFich2 = up.Ficheros("fichero2")
  41.       objFich2.ListFolderContents(Server.MapPath("miniaturas/"))
  42.       nombreFoto2=objFich2.nombre
  43.       end if
  44. %>
  45.          
  46.        
  47.        
  48.        <!--#include file="includes/AbrirBD.asp" -->
  49.        <%                          
  50.         titulo = up.form("titulo")     
  51.         director = up.form("director")
  52.         anio = up.form("anio")
  53.         min = up.form("min")
  54.         genero = up.form("genero")
  55.         pais = up.form("pais")
  56.         arg = escape(up.form("argumento"))
  57.         arg2 = unescape(arg)
  58.         interpretes = up.form("interpretes")
  59.        
  60.         sql= "Select * from PELICULAS where Id =" & id
  61.         tabla.open sql,conexion,1,3
  62.        
  63.         tabla.fields("Titulo") = titulo
  64.         tabla.fields("Director") = director
  65.         tabla.fields("Anio") = anio
  66.         tabla.fields("Min") = min
  67.         tabla.fields("Genero") = genero
  68.         tabla.fields("Pais") = pais
  69.         tabla.fields("Argumento") = arg2
  70.         tabla.fields("Interpretes") = interpretes
  71.        
  72.         if (len(nombreFoto) > 0) then
  73.             tabla.fields("Foto") = nombreFoto
  74.         end if
  75.        
  76.        if (len(nombreFoto2) > 0) then
  77.        tabla.fields("Miniatura") = nombreFoto2
  78.        end if
  79.                
  80.         tabla.update
  81.         tabla.close        
  82.         conexion.close
  83.         set up = nothing
  84.         Set tabla = Nothing
  85.         Set conexion = Nothing    
  86. %>
  #28 (permalink)  
Antiguo 29/12/2008, 13:19
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 5 meses
Puntos: 126
Respuesta: asp subir archivos o foto

Hola

+ ¿Has quitado la codificación UTF-8?
+ No estás usando la función
Remplaza(up.form("titulo"),0)

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #29 (permalink)  
Antiguo 30/12/2008, 05:16
 
Fecha de Ingreso: junio-2008
Mensajes: 145
Antigüedad: 16 años
Puntos: 0
Respuesta: asp subir archivos o foto

Hola Adler,

Gracias de nuevo por tu ayuda.

Me olvidé de usar la función y me compliqué demasiado la vida con el escape/unescape. Lo he puesto como tu me decías y ahora va perfecto:

Código asp:
Ver original
  1. <%         
  2.         titulo = Remplaza(up.form("titulo"),0)     
  3.         director = Remplaza(up.form("director"),0)
  4.         anio = Remplaza(up.form("anio"),0)
  5.         min = Remplaza(up.form("min"),0)
  6.         genero = Remplaza(up.form("genero"),0)
  7.         pais = Remplaza(up.form("pais"),0)
  8.         argumento = Remplaza(up.form("argumento"),0)
  9.         interpretes = Remplaza(up.form("interpretes"),0)
  10. %>

Ahora tengo problemas con la opción de eliminar ficha pero ya he visto que es tema de permisos, en local si doy control total me deja borrar tanto el registro de la base de datos como los jpg de las imágenes pero online, no tengo suficientes permisos para borrar los ficheros de las imágenes así que supongo que tendré que intentar que me los den.

Una última duda que tengo si lo que hemos usado para los acentos y las eñes vale para las tildes, te lo pregunto porque mi buscador va perfecto excepto con las tildes, es decir si busco películas en las que parte del nombre sea "director's cut" da un este error de SQL:

Microsoft JET Database Engine (0x80040E14)
Error de sintaxis (falta operador) en la expresión de consulta 'Director like '%director's%' ORDER by Anio,Titulo asc'.
/pelis2/buscarmultiple.asp, línea 194


Otro foreros intentaron ayudarme cuando puese este post pero no lo conseguimos arreglar:
http://www.forosdelweb.com/f87/probl...-tilde-617227/
  #30 (permalink)  
Antiguo 30/12/2008, 07:25
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 5 meses
Puntos: 126
Respuesta: asp subir archivos o foto

Hola

Sí, en la función no está cambiada la comilla simple por su entidad, por que el foro la cambia

cadena = replace(cadena,"'","*")

El asterisco cambialo por & #39; (quita el espacio entre la i comercial y la almohadilla)

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />

Última edición por Adler; 30/12/2008 a las 08:11 Razón: Por tercera vez!!!
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 00:36.