Primero, cree un programa en el lado del servidor para generar un archivo XML y devolverlo al cliente (getfolder.asp).
<%
'escrito por Linzhang Chen, 2003-4-20
' Indique la fuente y conserve esta información de derechos de autor al reimprimir
respuesta.escribir "<?xml versión=""1.0"" codificación=""GB2312""?>"&chr(13)
respuesta.escribir "<archivo multimedia>"&chr(13)
carpetas = solicitud ("carpeta")
si carpetas="/" entonces
carpetas=""
terminar si
cuenta débil
contar=0
carpetas=reemplazar(carpetas,".."")
basefolder="../media/"'ruta de la carpeta base
nuevacarpeta=carpeta base y carpetas
Establecer fso =server.CreateObject("Scripting.FileSystemObject")
establecer f=fso.getfolder(server.mappath(nuevacarpeta))
establecer sf = f.subcarpetas
para cada fd en sf' devuelve una lista de carpetas en la ruta especificada
respuesta.escribir "<archivo>"&chr(13)
respuesta.escribir "<ftype>carpeta</ftype>"&chr(13)
respuesta.escribir "<fname>"&fd.name&"</fname>"&chr(13)
respuesta.escribir "</file>"&chr(13)
contar=contar+1
próximo
establecer sf = nada
establecer ff=f.Archivos
por cada fi en ff
fname=fi.nombre
if instr("asf,wma,wmv",lcase(mid(fname,instrrev(fname,".")+1)))>0 entonces'Establezca los tipos de archivos que se pueden devolver para evitar fugas de código fuente
respuesta.escribir "<archivo>"&chr(13)
respuesta.escribir "<ftype>archivo</ftype>"&chr(13)
respuesta.escribir "<fname>"&fname&"</fname>"&chr(13)
respuesta.escribir "</file>"&chr(13)
contar=contar+1
terminar si
próximo
'Si no hay ningún archivo en el directorio, envía un elemento vacío
si cuenta = 0 entonces
respuesta.escribir "<archivo>"&chr(13)
respuesta.escribir "<ftype>vacío</ftype>"&chr(13)
respuesta.escribir "<fname>0</fname>"&chr(13)
respuesta.escribir "</file>"&chr(13)
terminar si
respuesta.escribir "</mediafile>"
establecer ff = nada
establecer f = nada
establecer fso = nada
%>
El siguiente es el trabajo del cliente JS (selectfile.asp)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transicional//ES">
<HTML>
<CABEZA>
<TITLE> Seleccionar archivo de vídeo</TITLE>
<estilo>
td{tamaño de fuente:9pt}
seleccione {ancho: 210}
.s2{ancho:250}
</estilo>
<IDIOMA DE ESCRITURA="JavaScript">
<!--
/*escrito por Linzhang Chen, 2003-4-20
Indique la fuente y conserve esta información de derechos de autor al reimprimir*/
//Precargar imágenes
var imgback = nueva Imagen();
imgback.src = "imágenes/flecha.gif";
var imgbackgray = nueva imagen();
imgbackgray.src = "imágenes/grayarrow.gif";
var imgfolder = nueva imagen();
imgfolder.src = "imágenes/carpeta.gif";
var imggrayfolder = nueva imagen();
imggrayfolder.src = "imágenes/grayfolder.gif";
// Pila de matriz de historial
var arrhistory=nueva matriz();
varhisi=0;
//Se utiliza para determinar el nombre del archivo que se devolverá
verificación de función()
{
si (document.all.filename.value=="")
{
alert("Seleccione el archivo primero");
devolver falso;
}
demás
{
window.returnValue =document.f1.folder.value+document.all.filename.value;
ventana.cerrar();
}
}
//Obtener el contenido del archivo XML
función obtener lista de usuarios (url)
{ var oXMLDoc = nuevo ActiveXObject('MSXML');
oXMLDoc.url = URL;
var ooRoot=oXMLDoc.root;
devolver ooRoot;
}
//Cuando se selecciona un archivo, devuelve este valor al cuadro de texto
función agregar archivo (txt)
{
documento.all.nombredearchivo.valor=txt;
}
función
de variable global
userlist(folders,ti)//Enumerar los cuadros seleccionados
{document.f1.folder.value=carpetas;
filebox.document.body.innerHTML="Cargando archivo, espere...";
var strshow="";
var timeoutid = nulo;
var nuevacarpeta="";
var arrfolder=nueva matriz();
var arrff=nueva matriz();
var whitestr="";
var oArtículo;
//Determinar el estado histórico
hisi+=ti;
arristory[hisi]=carpetas;
si (hisi==0)
{
flecha.innerHTML="<img src="images/grayarrow.gif">";
}
demás
{
arrow.innerHTML="<img src="images/arrow.gif" border=0 style="cursor:hand" onclick="userlist('"+arrhistory[hisi-1]+"',- 1)" onmouseover="this.src='images/arrow_over.gif'" onmouseout="this.src='images/arrow_over.gif'">";
}
//Determinar la carpeta actual
si (document.f1.carpeta.valor=="")
{
carpetaid.innerHTML="<img src="images/grayfolder.gif">"
}
demás
{carpeta de noticias=carpeta de verificación(document.f1.carpeta.valor)
carpetaid.innerHTML="<img src="images/folder.gif" border=0 style="cursor:hand" onclick="userlist('"+newsfolder+"',1)" onmouseover= "this.src='images/folder_over.gif'" onmouseout="this.src='images/folder.gif'">"
}
//Asignar un valor al cuadro desplegable
document.all.select.options.length=0;
nueva carpeta=carpetas;
carpetastr=""
var _obj=document.all.select;
var _o=document.createElement("Opción");
_o.text="Seleccionar carpeta";
_o.value="";
_obj.add(_o);
si (nueva carpeta!="")
{arrfolder=nuevacarpeta.split("/")
para(var i=0;i<arrfolder.length-1;i++)
{blankstr+=" ";
carpetastr+=arrfolder[i]+"/";
_o=document.createElement("Opción");
_o.text=blankstr+arrfolder[i];
_o.value=carpetastr;
_obj.add(_o);
}
}
document.all.select.options[document.all.select.options.length-1].selected=true;
url="getfolder.asp.gl?folder="+carpetas;
oRoot=getuserlist(url)
strshow="<table class=archivo cellspaceping=0 cellpadding=0>";
len=oRoot.children.length;
si (len==1)
{oArtículo = oRoot.children.item(0);
if(oItem.children.item(0).text=="vacío")
strshow="No más archivos ni carpetas";
demás
{
if(oItem.children.item(0).text=="carpeta")
{
strshow+="<tr><td><A href="javascript:parent.userlist('"+carpetas+oItem.children.item(1).text+"/"+"',1)"><img src="images/mediafolder.gif" border=0 >"+oItem.children.item(1).text+"</A></td></tr>";
}
demás
{
strshow+="<tr><td><a href="javascript:parent.addfile('"+oItem.children.item(1).text+"')" ><img src="images/mediafile. gif" border=0>"+oItem.children.item(1).text+"</A></td></tr>";
}
}
strshow+="</tabla>"
}
demás{
//Enviar datos a la pila
para(i=0;i<len;i++)
{ oArtículo = oRoot.children.item(i);
if(oItem.children.item(0).text=="carpeta")
{
arrff[i]="<A href="javascript:parent.userlist('"+carpetas+oItem.children.item(1).text+"/"+"',1)"><img src= "images/mediafolder.gif" border=0>"+oItem.children.item(1).text+"</A>";
}
demás
{
arrff[i]="<A href="javascript:parent.addfile('"+oItem.children.item(1).text+"')"><img src="images/mediafile.gif" border=0 height=12>"+oItem.children.item(1).text+"</A>";
}
}
//Obtener el número de columnas a generar
si (len<=6)
{x=1;
y=6;}
demás
{x=len/6;
y=6;}
para(var i=0;i<y;i++)
{strshow+="<tr>"
para(var j=0;j<x;j++)
{ponits=j*y+i;
si (ponits>=len)
{
strshow+="<td> </td>";
}
demás
{
strshow+="<td>"+arrff[ponits]+"</td>";
}
}
strshow+="</tr>"
}
strshow+="</table>"
}
filebox.document.body.innerHTML=strshow;
}
//-->
</SCRIPT>
<script IDIOMA="vbscript">
función carpeta de verificación (carpetastr)
si (folderstr="" o instr(folderstr,"/")=instrrev(folderstr,"/")) entonces
carpeta de verificación=""
demás
ncarpeta=izquierda(carpetastr,len(carpetastr)-1)
verificarcarpeta=izquierda(ncarpeta,instrev(ncarpeta,"/"))
terminar si
función final
</script>
</HEAD>
<BODY style="margin:0" bgColor=menu onload="javascript:userlist('',0)">
<ancho de tabla="443" borde="0" espacio entre celdas="0">
<tr>
<td altura="36"><ancho de tabla="409" borde="0">
<tr>
<td width="73" align="right">Rango de búsqueda (<u>I</u>):</td>
<td width="214"><select name="select" id="select" size="1" onchange="javascript:userlist(this.value,1);">
</select></td>
<td ancho="22" valign="línea base" id="flecha" align=right></td>
<td width="20" valign="middle" id="folderid"></td>
<td width="20" align="left"><img src="images/md.gif" width="16" height="15"></td>
<td width="28" align="left"><img src="images/viewtype.gif" width="23" height="14"></td>
</tr>
</tabla></td>
</tr>
<tr>
<td altura="120"><ancho de tabla="100%" altura="100%" borde="0">
<tr>
<td ancho="9"></td>
<td>
<iframe src="blank.htm" ancho=415 alto=120 id="filebox"></iframe></td>
<td ancho="13"></td>
</tr>
</tabla></td>
</tr>
<tr>
<td altura="60"><ancho de tabla="100%" borde="0">
<MÉTODO DE FORMULARIO=POST ACCIÓN="" nombre="f1">
<tipo de entrada="oculto" nombre="carpeta" valor="">
<tr>
<td width="85" align="right">Nombre de archivo (<u>N</u>): </td>
<td ancho="254"><tipo de entrada="texto" id="nombre de archivo" tamaño="34"></td>
<td><button onclick="javascript:return check()"> Abrir (<u>O</U>)</button></td>
</tr>
</FORM>
<tr>
<td align="right">Tipo de archivo (<u>T</u>):</td>
<td><seleccione nombre="select2" clase=s2>
<opción>Transmisión de archivos multimedia (*.asf, *.wmv, *.wma)</opción>
</select></td>
<td><tipo de entrada="botón" nombre="Enviar" valor=" Cancelar " onclick="ventana.close();"></td>
</tr>
</tabla></td>
</tr>
</tabla>
</CUERPO>
</HTML>
También hay un pequeño archivo en blanco.htm que se utiliza para definir el estilo de visualización de archivos y carpetas.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transicional//ES">
<HTML>
<CABEZA>
<TITLE> Nuevo documento </TITLE>
<estilo>
td{tamaño de fuente:9pt}
cuerpo {tamaño de fuente: 9 pt}
.archivo A{COLOR: #000000; DECORACIÓN DE TEXTO: ninguno;tamaño de fuente:9pt}
.archivo A: visitado {COLOR: #000000; DECORACIÓN DE TEXTO: ninguno; tamaño de fuente: 9pt}
.archivo A: hover {COLOR: #000000; DECORACIÓN DE TEXTO: ninguno; tamaño de fuente: 9pt}
</estilo>
</HEAD>
<BODY estilo="margen: 0pt">
</BODY>
</HTML>
Al llamar, utilice la siguiente función para lograr el efecto de seleccionar archivos en el lado del servidor que se parezcan al real.
función seleccionar archivo()
{
var arr = showModalDialog("selectfile.asp?temp="+Math.random(), "", "dialogWidth:453px; dialogHeight:252px; status:0;help:1");
si (arr! = nulo)
{
regreso
}
}
Lo último que devuelve esta función es el nombre del archivo seleccionado. Puede tomar varias imágenes utilizadas en la función desde el cuadro de selección de archivos :)
Se estima que puede encontrar varios ERRORES desconocidos durante el uso. Bienvenidos a todos a comunicarse conmigo: Correo electrónico: [email protected].