Utilice XML+FSO+JS para implementar el código para el efecto de selección de archivos del lado del servidor. Los amigos que lo necesiten pueden consultarlo.
<%
'escrito por Linzhang Chen, 2003-4-20
' Indique la fuente y conserve esta información de derechos de autor al reimprimir
respuesta.write <?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 (documento.todo.nombredearchivo.valor==)
{
alerta (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;
}
var first=1;//Definir una variable global
función lista de usuarios (carpetas, ti) // Listar cuadros seleccionados
{document.f1.folder.value=carpetas;
filebox.document.body.innerHTML=Cargando archivo, espere...;
var strshow=;
var timeoutid = nulo;
var nueva carpeta=;
var arrfolder=nueva matriz();
var arrff=nueva matriz();
var cadenaen blanco=;
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.gif'/>;
}
//Determinar la carpeta actual
si (documento.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.valor=;
_obj.add(_o);
si (nueva carpeta! =)
{carpetaarr=nuevacarpeta.split(/)
para(var i=0;i<arrfolder.length-1;i++)
{cadena en blanco+= ;
carpetastr+=arrcarpeta[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=<clase de tabla=archivo cellspace=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 hay archivos ni carpetas;
demás
{
if(oItem.children.item(0).text==carpeta)
{
strshow+=<tr><td><A href=/javascript:parent.userlist('+folders+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('+folders+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++)
{strmostrar+=<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+=</tabla>
}
filebox.document.body.innerHTML=strshow;
}
//-->
</SCRIPT>
<idioma del script=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>
</CABEZA>
<estilo CUERPO=margen:0 bgColor=menú onload=javascript:lista de usuarios('',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 ancho=214><seleccionar nombre=seleccionar id=seleccionar tamaño=1 onchange=javascript:userlist(this.value,1);>
</select></td>
<td ancho=22 valign=id de línea base=flecha align=derecha></td>
<td ancho=20 valign=id medio=idcarpeta></td>
<td ancho=20 align=left><img src=images/md.gif ancho=16 alto=15></td>
<td ancho=28 align=left><img src=images/viewtype.gif ancho=23 alto=14></td>
</tr>
</tabla></td>
</tr>
<tr>
<td altura=120><ancho de la 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=nombre oculto=valor de carpeta=>
<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=nombre del botón=Enviar valor= Cancelar onclick=window.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: 9pt}
.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>
</CABEZA>
<estilo CUERPO=margen: 0pt>
</CUERPO>
</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 :)