2015-09-30 3 views
-1

Когда я нажимаю на список, который ищет файл PDF, он не открывается.Как открыть PDF-файл в приложении WebForm путем поиска?

Код приведен ниже. Есть предположения?

protected void Button1_Click(object sender, EventArgs e) 
{ 
    ListBox1.Items.Clear(); 
    string search = TextBox1.Text; 
    if (TextBox1.Text != "") 
    { 
    string[] pdffiles = Directory.GetFiles(@"\\192.168.5.10\fbar\REPORT\CLOTHO\H2\REPORT\", "*" + TextBox1.Text + "*.pdf", SearchOption.AllDirectories); 
    foreach (string file in pdffiles) 
    { 
     // ListBox1.Items.Add(file); 
     ListBox1.Items.Add(Path.GetFileName(file)); 
    } 
    } 
    else 
    { 
    Response.Write("<script>alert('For this Wafer ID Report is Not Generated');</script>"); 
    } 
} 

protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    string pdffiles = ListBox1.SelectedItem.ToString(); 

    string.Format("attachment; filename={0}", fileName)); 

    ProcessStartInfo infoOpenPdf = new ProcessStartInfo(); 
    infoOpenPdf.FileName = pdffiles; 
    infoOpenPdf.Verb = "OPEN"; 
    // Process.Start(file); 
    infoOpenPdf.CreateNoWindow = true; 
    infoOpenPdf.WindowStyle = ProcessWindowStyle.Normal; 

    Process openPdf = new Process(); 
    openPdf.StartInfo = infoOpenPdf; 
    openPdf.Start(); 
} 
+0

Пожалуйста, сообщите мне, есть ли у кода какие-либо проблемы ... – cgkumar

+1

Предполагая, что этот код работает, он откроет PDF-файл на сервере, а не клиент, на котором работает веб-браузер. Вам нужно будет загрузить или записать файл в поток ответов. – Crowcoder

+1

Код может быть в порядке. Ваше ожидание, что вы можете открывать файлы на клиентской машине, запуская 'Process.Start' на сервере, является проблемой. Поскольку вы, вероятно, уже прочитали многие [C# открыть PDF-файл в ASP.Net] (https://www.bing.com/search?q=C%23%20open%20pdf%20file%20in%20ASP.Net) вопросы/статей несколько странно, что вы пытались это сделать. –

ответ

1

Во-первых, вы должны сохранить полное имя файла, чтобы получить его позже. Таким образом, вы должны изменить от:

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

To:

ListBox1.Items.Add(new ListItem(Path.GetFileName(file), file)); 

Затем вы должны отправить файл с сервера к клиенту, как это:

protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    string fileName = ListBox1.SelectedValue; 
    byte[] fileBytes = System.IO.File.ReadAllBytes(fileName); 

    System.Web.HttpContext context = System.Web.HttpContext.Current; 
    context.Response.Clear(); 
    context.Response.ClearHeaders(); 
    context.Response.ClearContent(); 
    context.Response.AppendHeader("content-length", fileBytes.Length.ToString()); 
    context.Response.ContentType = "application/pdf"; 
    context.Response.AppendHeader("content-disposition", "attachment; filename=" + fileName); 
    context.Response.BinaryWrite(fileBytes); 
    context.ApplicationInstance.CompleteRequest(); 
} 

Примечание: не забудьте инициализировать ListBox с помощью свойство AutoPostBack установлен на true.

+0

Hi. Спасибо за ваш код. Но у меня все еще есть одна и та же проблема, которая не может открыть или просмотреть файл pdf. Пожалуйста, помогите мне .... – cgkumar

+0

Привет Buzinas, Спасибо за код. он по-прежнему не может открыть файл pdf с сервера в веб-браузере при нажатии на список. Пожалуйста, помогите мне .... – cgkumar

+0

@cgkumar Какая ошибка вы получаете? Вы пытались отладить свой код? – Buzinas

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