Hola, es la primera vez que posteo en este foro y es que estoy algo perdido, estoy desarrollando un sitio web en aspx y para el necesito introducir un buscador de documentos de una carpeta que forma parte del proyecto.
He estado buscando información sobre como sería la forma de hacerlo y siempre me encuentro con lo mismo.
Usar "Scripting.FileSystemObject" para acceder a los directorios y manejar los ficheros, es mas...he encontrado código que hace exactamente lo que busco.
Código:
public partial class searchfiles : System.Web.UI.Page
{
String SearchTerm;
String FolderName;
String SearchResponse;
protected void Page_Load(object sender, EventArgs e)
{
SearchTerm = Request.Form[0];
String Novalid=" a b c d e f g h i j k l m n o p q r s t u v w x y z yes no and more";
String NovalidResponse ="Go back and try again. Your search term is very common";
if (SearchTerm.IndexOf(Novalid)==0){
Response.Write ("<CENTER><H2>Search results</H2></CENTER>");
FolderName= "Documentos";
ShowList();
}else{
Response.Write(NovalidResponse);
}
SearchResponse="";
}
public void ShowList(){
String FolderToCheck = Server.MapPath("./"+FolderName+"/");
object fs, f, f1, fc, s;
fs = Server.CreateObject("Scripting.FileSystemObject");
f = fs.GetFolder(FolderToCheck);
fc = f.Files;
foreach(object f1 in fc){
Wfile = f1.name;
if (right(Wfile, 4)==".pdf"){
Wfile2 = FolderToCheck & Wfile;
Set fs = CreateObject("Scripting.FileSystemObject");
Set a = fs.OpenTextFile(Wfile2);
ct = a.ReadAll;
a.close;
ct2=lcase(ct);
SearchTerm2 = lcase(SearchTerm);
if (instr(ct2,SearchTerm2>0)) {
if (instr(ct,"</title>")>0) {
longitud=instr(ct,"</title>");
longitud=longitud -1;
ct=left(ct,longitud);
longitud2=len(ct);
longitud=instr(ct,"<title>");
longitud=longitud2 -longitud -6;
ct=right(ct,longitud);
}else{
if (instr(ct,"</TITLE>")>0) {
longitud=instr(ct,"</TITLE>");
longitud=longitud -1;
ct=left(ct,longitud);
longitud2=len(ct);
longitud=instr(ct,"<TITLE>");
longitud=longitud2 -longitud -6;
ct=right(ct,longitud);
}
}
SearchResponse= SearchResponse +"<TR><TD>"+ ct + "</TD><TD ALIGN=CENTER VALIGN=MIDDLE>" + " <A HREF=" + "/" + FolderName + "/" + Wfile +"> More </A></TD></TR>";
longitud=0;
ct="";
}
}
Response.Write("<HTML><HEAD><TITLE>Search results</TITLE></HEAD><BODY BGCOLOR=FFFFFF><CENTER>");
Response.Write("<TABLE BORDER=0 WIDTH=550><TR><TD BGCOLOR=C0C0C0><FONT SIZE=5><B>Search Results</B></FONT></TD></TR></TABLE>");
Response.Write ("<TABLE BORDER=0 WIDTH=550>");
if (SearchResponse!="") {
Response.Write(SearchResponse);
}else
Response.Write("<TR><TD>The specified term or phrase was not found</TD></TR>");
}
Response.Write("</TABLE>");
Response.Write("</CENTER></BODY></HTML>");
}
}
En principio eso hace lo que necesito, el problema es que no lo encuentro en C# solo en VB y he ido modificandolo paso a paso de arriba abajo, pero cuando llego a
Código:
object fs, f, f1, fc, s;
fs = Server.CreateObject("Scripting.FileSystemObject");
f = fs.GetFolder(FolderToCheck);
fc = f.Files;
no se como seguir, donde yo declaro object en el código original declara Set, el problema está en que cuando compila, fs es de tipo object y no reconocer el método GetFolder.
Si alguien puede darme algo de ayuda, bien la solucion o algo alternativo para buscar archivos en un directorio por nombre y sacar la ruta en el resultado.
Gracias.