#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
к сообщению, чтобы эксперты в этой области могли вам помочь. Пожалуйста, опубликуйте ответ, когда вам удастся его решить. Спасибо.