Файлы Word, Excel не отображаются в браузере

#c# #excel #pdf

#c# #excel #PDF

Вопрос:

Приведенный ниже код находится в моем файле .cs.

защищенная пустота btnView_Click(отправитель объекта, EventArgs e) {

     string strurl = "ViewFile.ashx?Name=Img/FT.pdf";//Welcome.docx";
    string StrPop = "window.open('" strurl "', '_newtab')";
    ScriptManager.RegisterClientScriptBlock(sender as Control, this.GetType(), "OpenWindow", StrPop, true);
}
  

Код ViewFile.ashx.

общедоступный запрос процесса void (контекст HttpContext) {

bool freeDownload = true;

     string supportingFile = context.Request.QueryString["Name"].ToString();
    string strpath = HttpContext.Current.Server.MapPath(supportingFile);
    string strname = Path.GetFileName(strpath);
    string strextension = Path.GetExtension(strpath);
    string strtype = "";

    if (strextension != null)
    {
        switch (strextension.ToLower())
        {
            case ".htm":
            case ".html":
                strtype = "text/HTML";
                break;

            case ".txt":
                strtype = "text/plain";
                break;
            case ".doc":
                strtype = "application/msword";
                break;
            case ".rtf":
                strtype = "application/msword";
                break;
            case ".docx":
                strtype ="application/vnd.openxmlformats-officedocument.wordprocessingml.document" ; //"application/msword";
                break;
            case ".xls":
                strtype = "application/vnd.ms-excel";
                break;
            case ".xlsx":
                strtype = "application/vnd.ms-excel";
                break;
            case ".pdf":
                strtype = "Application/pdf";
                break;
        }
    }
    if (freeDownload)
    {
       // context.Response.AppendHeader("content-disposition", "inline: filename=""   strname   """);
    }
    if (strtype != null)
    {
        FileInfo file = new FileInfo(strpath);
        context.Response.ContentType = strtype;
        context.Response.AddHeader("Content-Disposition", "inline; filename=""   file.Name   """);
        context.Response.AddHeader("Content-Length", file.Length.ToString());
        context.Response.TransmitFile(file.FullName);
        context.Response.WriteFile(strpath);
        context.Response.Flush();
        context.Response.End();

    }

}
  

пожалуйста, кто-нибудь мне поможет? когда я нажимаю кнопку просмотра, если это PDF-файл, он отображается в браузере. но если это .docx, doc, .xlsx, .. он будет загружаться напрямую. как я могу отобразить эти файлы в браузере?

Ответ №1:

Вы можете по нажатию кнопки создать каталог FolderBrowserDialog, присвоить ему фильтры для соответствующих расширений, а затем показать его пользователю, например:

 FolderBrowserDialog browseDialog;

browseDialog.Filter=" Wordfile (*.dotm; *.dot; *.docx; *.dotx; *.doc; *.docm; *.rtf; *.txt)|*.dotm; *.dot; *.docx; *.dotx; *.doc; *.docm; *.rtf; *.txt";  

if (browseDialog.ShowDialog() == DialogResult.OK)
    {
       MessageBox.Show( System.IO.Path.GetFullPath(browseDialog.FileName));
    }
  

Комментарии:

1. Спасибо за ваш ответ. можете ли вы объяснить, как использовать FolderBrowserDialog в webapplicaion.я думаю, что ваш код является приложением Windows. если я перейду к использованию System. Windows. Форма я получил некоторую ошибку. потому что я использую веб-элементы управления. мне нужно решение для веб-приложения

2. @user3300574, да, это синтаксис WinForm, я предлагаю вам добавить тег web application к сообщению, чтобы эксперты в этой области могли вам помочь. Пожалуйста, опубликуйте ответ, когда вам удастся его решить. Спасибо.