2015-09-25 3 views
-2

В настоящее время я делаю проект веб-приложений в ASP.netC#.Как искать файл по его названию и открывать его?

У меня возникли проблемы с поиском файла по его названию. Ниже код показывает, что я сделал, но проблема в том, что он не показывает файл в соответствии с именем поиска, так как он показывает все имена файлов в каталогах.

Другая проблема заключается в том, что я не открываю файлы поиска. Может кто-нибудь мне помочь?

protected void Button1_Click(object sender, EventArgs e) 
{ 
    if (TextBox1.Text != "") 
    { 
     string[] pdffiles = Directory.GetFiles(@ 
     "\\192.168.5.10\\fbar\\REPORT\\CLOTHO\\H2\\REPORT\\", "*.pdf", SearchOption.AllDirectories); 
     string search = TextBox1.Text; 
     ListBox1.Items.Clear(); 

     foreach(string file in pdffiles) 
     { 

      ListBox1.Items.Add(Path.GetFileName(file)); 
     } 

     TextBox1.Focus(); 
    } else 
    { 
     Response.Write("<script>alert('For this Wafer ID Report is Not Generated');</script>"); 
    } 
} 
+1

Ну, конечно, ваш код ничего не делает с помощью 'search' - вы не используете эту переменную в любом месте своего кода. – hvd

+1

Можете ли вы дать мне пример кода. Пожалуйста, помогите мне ... – cgkumar

ответ

0

вам нужно использовать строку поиска, чтобы проверить, если файл соответствует его

 protected void Button1_Click(object sender, EventArgs e) 
    { 


     if (TextBox1.Text != "") 
     { 
      File[] pdffiles = Directory.GetFiles(@"\\192.168.5.10\fbar\REPORT\CLOTHO\H2\REPORT\", "*.pdf", SearchOption.AllDirectories); 
      string search = TextBox1.Text; 
      ListBox1.Items.Clear(); 
      foreach (var file in pdffiles) 
      { 
       if(file.Name==search) 
       { 
       ListBox1.Items.Add(Path.GetFileName(file)); 
       } 
      } 

      TextBox1.Focus(); 
     } 
     else 
     { 
      Response.Write("<script>alert('For this Wafer ID Report is Not Generated');</script>"); 


     } 
    } 

Также обратите внимание, как вы написали путь в функции GetFiles

+0

if (file.Name == search), * .Name is error. он показывает, что ошибка «строка» не содержит определения для «Имя», и не может быть найден метод расширения «Имя», принимающий первый аргумент типа «строка» (вам не хватает директивы using или ссылки на сборку?) – cgkumar

+0

Я его модифицировал .. вам нужно использовать pdffiles типа file []. Строка не имеет определения для filename –

0

Я думаю, что путь должен быть @"\\192.168.5.10\fbar\REPORT\CLOTHO\H2\REPORT\". Кроме того, Directory.EnumerateFiles может быть более эффективным.

Вот как я бы искать любые файлы, которые содержат searchName

using System.Linq; 

string reportDirectoryName = "..."; // fill in with full path 
string searchName = TextBox1.Text; 
if (string.IsNullOrWhitespace(searchName)) 
    return ...; 

var files = Directory.EnumerateFiles(reportDirectoryName, "*.pdf", SearchOption.AllDirectories); 
    .Select(n => Path.GetFileName(n)) 
    .Where(n => n.Contains(searchName); 
ListBox1.Items.Clear(); 
ListBox1.Items.Add(files); 
+0

Да, префикс @ означает, что нет необходимости удвоить обратную косую черту –

1

Сначала вы должны использовать переменный поиск, чтобы отфильтровать намеченные файлы

protected void Button1_Click(object sender, EventArgs e) 
     { 
      string search = TextBox1.Text; 

      if (TextBox1.Text != "") 
      { 

       string[] pdffiles = Directory.GetFiles(@"\\192.168.5.10\\fbar\\REPORT\\CLOTHO\\H2\\REPORT\\", string.Format("*{0}*.pdf",search), SearchOption.AllDirectories); 

       ListBox1.Items.Clear(); 
       foreach (string file in pdffiles) 
       { 

        ListBox1.Items.Add(Path.GetFileName(file)); 
       } 

       TextBox1.Focus(); 
      } 
      else 
      { 
       Response.Write("<script>alert('For this Wafer ID Report is Not Generated');</script>"); 


      } 
     } 

Теперь, чтобы открыть выбранный файл.

protectecd void ListBox1_SelectedIndexChanged(object sender,EventArgs e) 
{ 
     string fileName= ListBox1.SelectedItem.ToString(); 
     Response.ContentType = "Application/pdf"; 
    Response.AppendHeader("Content-Disposition",string.Format("attachment; filename={0}",filename)); 
    Response.TransmitFile(fileName); 
    Response.End(); 
} 
+0

string fileName = ListBox1.SelectedText; , * .SelectedText показывает ошибку. Который есть, ошибка «System.Web.UI.WebControls.ListBox» не содержит определения для «SelectedText» и не имеет метода расширения «SelectedText», принимающего первый аргумент типа «System.Web.UI.WebControls.ListBox 'можно найти (вам не хватает директивы использования или ссылки на сборку?) – cgkumar

+0

My Bad ..... change SelectedText to SelectedItem .... Обновлено также в ответ – Viru

+0

Спасибо. Но он все еще показывает ошибку. Что является ошибкой Невозможно неявно преобразовать тип 'System.Web.UI.WebControls.ListItem' в 'string'. – cgkumar

Смежные вопросы