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

Ruta completa para un campo FILE

Estas en el tema de Ruta completa para un campo FILE en el foro de ASP Clásico en Foros del Web. Hola a todos, He estado buscando pero no he encontrado nada al respecto. Estoy haciendo una aplicación web que se usará a nivel local. Esta ...
  #1 (permalink)  
Antiguo 14/08/2012, 05:33
 
Fecha de Ingreso: agosto-2011
Mensajes: 68
Antigüedad: 12 años, 8 meses
Puntos: 11
Pregunta Ruta completa para un campo FILE

Hola a todos,

He estado buscando pero no he encontrado nada al respecto.

Estoy haciendo una aplicación web que se usará a nivel local.

Esta aplicación tiene que enlazar documentos que están ubicados en otro servidor de almacenamiento. Toda la empresa tiene una unidad de red creada (Z:) de una carpeta compartida en ese servidor.

La aplicación Web tiene que ser capaz de enlazar ficheros del servidor de almacenamiento, para que luego otros usuarios puedan abrir los ficheros desde el Web. Es decir, tengo que poder enlazar la dirección completa y guardarla en una base de datos (por ej. Z:\produccion\precios.doc).

Alguien sabe como conseguir que al recoger de un form, un campo de tipo FILE me devuelva la ruta completa?

Muchas gracias y un saludo.
  #2 (permalink)  
Antiguo 14/08/2012, 05:46
 
Fecha de Ingreso: agosto-2011
Mensajes: 68
Antigüedad: 12 años, 8 meses
Puntos: 11
Respuesta: Ruta completa para un campo FILE

Se me ocurrió pararle el valor del campo FILE a un campo oculto a través de Javascript y el resultado es:

C:\fakepath\110204.doc

El nombre del archivo es correcto, pero la ruta evidentemente no... :(
  #3 (permalink)  
Antiguo 14/08/2012, 09:08
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, 2 meses
Puntos: 535
Respuesta: Ruta completa para un campo FILE

El único explorador, según tengo entendido, que pasa el path completo del archivo es IE, al menos en versión 7 y anteriores. El resto, ninguno. Y es que no es necesario! Para qué quiere saber el servidor dónde está tu archivo físicamente ubicado en tu PC? Es un error de seguridad.

El campo file está pensado para subir archivos y, me parece, tu intención es usarlo para otra cosa: para que los usuarios ubiquen documentos en esta unidad de red (z:\) y almacenen la ruta y el nombre del archivo en la base de datos, pero sin hacer un upload. Es así?
__________________
...___...

Última edición por AlZuwaga; 16/08/2012 a las 06:32
  #4 (permalink)  
Antiguo 14/08/2012, 23:33
 
Fecha de Ingreso: agosto-2011
Mensajes: 68
Antigüedad: 12 años, 8 meses
Puntos: 11
Respuesta: Ruta completa para un campo FILE

Exactamente es eso lo que quiero hacer. Se te ocurre alguna forma de hacerlo sin el campo FILE?
  #5 (permalink)  
Antiguo 15/08/2012, 07:43
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, 2 meses
Puntos: 535
Respuesta: Ruta completa para un campo FILE

Yo intentaría mediante FSO hacer un explorador de archivos en esa unidad compartida.
__________________
...___...
  #6 (permalink)  
Antiguo 15/08/2012, 23:28
 
Fecha de Ingreso: agosto-2011
Mensajes: 68
Antigüedad: 12 años, 8 meses
Puntos: 11
Respuesta: Ruta completa para un campo FILE

Es una buena idea. Esta yo obsesionado con un campo file.
Tendré que crear un Z: en el servidor web y usar una cuenta para el IIS con permisos para Z:
Cuando lo termine, meto el codigo acá por si alguien alguna vez tiene que hacer algo parecido.

Muchas gracias por la idea.
  #7 (permalink)  
Antiguo 16/08/2012, 04:27
 
Fecha de Ingreso: agosto-2011
Mensajes: 68
Antigüedad: 12 años, 8 meses
Puntos: 11
Respuesta: Ruta completa para un campo FILE

Bueno, parece que lo he conseguido solucionar.
No funciona con una unidad de red Z:\ pero sí con dirección \\maquina\Recurso_compartido
Pongo el código, aunque está hecho un poco rápido y grotesco.

En algún lado que venga bien, hay que inicializar variables. Quizás en un global.asa:

Código ASP:
Ver original
  1. Dim ficheros(100)
  2.  session("ficheros")=ficheros
  3.  session("numficheros")=0
  4.  session("FSOPath")="\\10.160.2.5\Server"
  5.  session("indice")=0
  6.  session("FSOarchivo")=""

Después yo tengo un botón examinar para abrir el explorador de archivos que he hecho:

Código ASP:
Ver original
  1. if session("numficheros")>0 then
  2.   ficheros=session("ficheros")
  3.  End if
  4. %>
  5. <form action="subirfichero2.asp" method="post" name="subirfichero" id="subirfichero">
  6.  
  7.   <input name="button2" type="button" class="botonpeque" id="button2" onclick="MM_openBrWindow('explorador.asp','opener','scrollbars=yes,width=500,height=400')" value="Examinar" />
  8. </form>
  9. <table width="300" border="0" cellspacing="0" cellpadding="0">
  10. <%
  11.  For i=1 to session("numficheros")
  12. %>
  13.   <tr>
  14.     <td class="tablacalendario">
  15.     <%
  16.      if len(ficheros(i))>25 then
  17.       Response.Write("..."&right(ficheros(i),25))
  18.      Else
  19.       Response.Write(ficheros(i))
  20.      End if
  21.    
  22.     %></td>
  23.     <td width="75" class="tablacalendario"><input name="button" type="submit" class="formulariomuycorto" id="button" value="Eliminar" onclick="javascript: document.location.href('elimina.asp?id=<%=i%>');" /></td>
  24.   </tr>
  25. <%
  26.  Next
  27. %>
  28. </table>

Al darle a examinar, se abre un popup con el explorador:

Código ASP:
Ver original
  1. If not session("logged") then
  2.  response.Redirect("index.asp")
  3. End if
  4.  
  5.  
  6. %>
  7. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  8. <html xmlns="http://www.w3.org/1999/xhtml">
  9. <head>
  10. <meta http-equiv="Content-Type" content="text/html; charset=iso 8859-1" />
  11. <title>Explorador de Archivos</title>
  12. <link href="agenda.css" rel="stylesheet" type="text/css" />
  13. <style type="text/css">
  14. body,td,th {
  15.     color: #000;
  16. }
  17. body {
  18.     background-color: #FFF;
  19.     margin-left: 5px;
  20.     margin-top: 5px;
  21.     margin-right: 5px;
  22.     margin-bottom: 5px;
  23. }
  24.  
  25. </style>
  26.  
  27.  
  28. </head>
  29.  
  30. <body>
  31. <%
  32.  Dim FSO, raiz, carpeta, archivos
  33.  
  34.  
  35.  if session("indice")>0 and request.Form("seleccionado")<>"" then
  36.   seleccionado=request.Form("seleccionado")
  37.     session("FSOarchivo")=request.Form(seleccionado)
  38.  End if
  39.  
  40.  set FSO = server.createObject("Scripting.FileSystemObject")
  41.  
  42.  
  43. if Request.QueryString("nroot")<>"" then
  44.  session("FSOPath")=Request.QueryString("nroot")
  45. End if
  46.  
  47.  Set raiz = FSO.GetFolder(session("FSOPath"))
  48.  
  49. %>
  50. <form name="archivos" action="#" method="post">
  51. <table width="480" border="0" cellspacing="0" cellpadding="2">
  52.   <tr class="tabladatos">
  53.     <td width="19"><a href="explorador.asp?nroot=<%
  54.    
  55.     if (not raiz.isRootFolder) then
  56.      Response.Write(raiz.parentfolder.path)
  57.     End if
  58.    
  59.     %>"><img src="images/subirnivel.gif" width="18" height="15" border="0" /></a></td>
  60.     <td colspan="3"><%=session("FSOPath")%></td>
  61.   </tr>
  62. <%
  63.  FSO_Buscar_Carpetas(session("FSOPath"))
  64.  FSO_Buscar_Archivos(session("FSOPath"))
  65. %>
  66. </table>
  67.  
  68. <%
  69. Sub FSO_Buscar_Carpetas(nombre_carpeta)
  70.  
  71. 'extraigo la coleccion de carpetas
  72. set coleccionCarpetas = raiz.subFolders
  73.  
  74. for each carpeta in coleccionCarpetas
  75. %>
  76.   <tr class="tabladatos">
  77.     <td width="19"><img src="images/carpeta.gif" width="18" height="19" /></td>
  78.         <td width="10">&nbsp;</td>
  79.     <td><a href="explorador.asp?nroot=<%=carpeta.path%>"><%=carpeta.name%></a></td>
  80.     <td width="75">&nbsp;</td>
  81.   </tr>
  82. <%
  83. next
  84.  
  85. End Sub
  86. %>
  87.  
  88. <%
  89. Sub FSO_Buscar_Archivos(nombre_carpeta)
  90. session("indice")=0
  91.  
  92. 'extraigo la coleccion de carpetas
  93. Set carpeta = FSO.GetFolder(nombre_carpeta)
  94. 'traigo los archivos de la carpeta
  95. Set archivos = carpeta.Files
  96.  
  97. for each nombre_archivo in archivos
  98. tamano=nombre_archivo.size/1024
  99. session("indice")=session("indice")+1
  100. %>
  101.   <tr class="tabladatos">
  102.     <td width="19"><img src="images/archivo.gif" width="18" height="19" /></td>
  103.     <td width="10">
  104.    
  105.   <input name="seleccionado" type="radio" value="<%=session("indice")%>" onclick="javasctript: document.forms.archivos.submit(); devuelve_valor(); window.close();" class="botongrupo" />
  106.   </td>
  107.   <td>
  108.   <input name="<%=session("indice")%>" class="formularioculto" value="<%=nombre_archivo.name%>" readonly="readonly" /></td>
  109.    
  110.     <td width="75" align="right"><%=FormatNumber(tamano,0)%> Kb</td>
  111.   </tr>
  112. <%
  113. next
  114.  
  115. End Sub
  116. %>
  117. </form>
  118.  
  119. </body>
  120. </html>
  121.  
  122. <script language="javascript">
  123.  function devuelve_valor()
  124.  {
  125.      window.opener.location.href('subirfichero2.asp')
  126.  }
  127. </script>

Al seleccionar un archivo, se redirige a la página que recogerá el path completo:

Código ASP:
Ver original
  1. <%
  2.  
  3. If not session("logged") then
  4.  response.Redirect("index.asp")
  5. End if
  6.  
  7.  
  8.  
  9. ficheros=session("ficheros")
  10. session("numficheros")=session("numficheros")+1
  11. session("indice")=0
  12.  
  13.  
  14. temp=session("FSOPath")&"\"&session("FSOarchivo")
  15.  
  16. duplicado=false
  17. for i=1 to session("numficheros")-1
  18.  if temp=ficheros(i) then
  19.   dublicado=true
  20.  End if
  21. Next
  22.  
  23. if duplicado=false then
  24.  ficheros(session("numficheros")) = temp
  25. End if
  26.  
  27. session("ficheros")=ficheros
  28.  
  29. response.Redirect("subirfichero.asp")
  30. %>

Creo que me he complicado bastante, pero funciona.
  #8 (permalink)  
Antiguo 16/08/2012, 06:41
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, 2 meses
Puntos: 535
Respuesta: Ruta completa para un campo FILE

No, no te complicaste nada. Al parecer -digo, sin probarlo ni nada- hiciste un trabajo excelente. No me queda claro para qué inicializás esas variables session porque los datos están todos harcodeados... no hay ningún dato que sea "propiedad del usuario". Parecería ser más que session una propiedad de aplicattion ó directamente no inicializarlas. Pero, claro, no analicé muy detenidamente el script.
__________________
...___...
  #9 (permalink)  
Antiguo 16/08/2012, 10:25
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 4 meses
Puntos: 98
Respuesta: Ruta completa para un campo FILE

Nunca he podido conectar a una unidad de red con FSO y no se me había ocurrido utilizar la IP, espero nunca tener que probarlo pero si alguna vez necesito hacerlo, este es un buen tip

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #10 (permalink)  
Antiguo 17/08/2012, 06:39
 
Fecha de Ingreso: agosto-2011
Mensajes: 68
Antigüedad: 12 años, 8 meses
Puntos: 11
Respuesta: Ruta completa para un campo FILE

Muchas gracias por todo y saludos.

Etiquetas: completa, file, ruta, campos
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 14:17.