【问题标题】:Couldn't read files properly using asp.net C#无法使用 asp.net C# 正确读取文件
【发布时间】:2011-05-24 08:43:04
【问题描述】:
    System.IO.StreamReader sr = new System.IO.StreamReader(Server.MapPath(strheadlinesid1));

    string line;

    while (sr.Peek() != -1)
    {
        line = sr.ReadLine();
        Response.Write("<tr>"+"<td>"+ Server.HtmlEncode(line) + "</td>"+"</tr>");
    }

我正在使用上面的代码读取文件。但这只是正确读取 .txt 文件(未正确读取 .doc、docx 和 .rtf)。谁能告诉如何在网络浏览器中阅读 .pdf 文件,例如在新标签页中打开 adobe 阅读器。谢谢

【问题讨论】:

  • 不,它不会读取 .doc 和 .docx 等文件。这些是二进制文件,这只是读取纯文本。您对 PDF 的含义也不是很清楚...
  • 您是否期望几行代码能够读取任何文件格式?您最好的选择可能是将浏览器直接指向文件 URL 并希望获得最好的结果。
  • 好的,谢谢,我在问一种在网络浏览器上阅读 PDF 的方法。
  • 目前还不清楚你的意思。您是否只是想从 ASP.NET 为他们提供服务?除了 PDF 的正常链接之外,您还需要什么?
  • 上面的代码用于显示.txt文件。所以我在问一种显示PDF文件的方法。

标签: c# asp.net pdf filereader


【解决方案1】:

要下载 PDF 文件,请使用您的 pdf 文件调用此代码:根据用户对其浏览器的设置,它可能会根据需要在新选项卡中打开。

public static void DownloadFile(string fname, bool forceDownload)
{
    string path = fname;
    if (fname.StartsWith("~"))
        path = Server.MapPath(fname);
    string name = Path.GetFileName(path);
    string ext = Path.GetExtension(path);
    string type = "";
    // set known types based on file extension  
    if (ext != null)
    {
        switch (ext.ToLower())
        {
            case ".htm":
            case ".html":
                type = "text/HTML";
                break;

            case ".txt":
                type = "text/plain";
                break;

            case ".pdf":
                type = "Application/pdf";
                break;

            case ".doc":
            case ".rtf":
                type = "Application/msword";
                break;

            case ".exe":
                type = "application/octet-stream";
                break;

            case ".zip":
                type = "application/zip";
                break;
        }
    }
    if (forceDownload)
    {
        Response.AppendHeader("content-disposition",
            "attachment; filename=" + name);
    }
    if (!string.IsNullOrEmpty(type))
        Response.ContentType = type;
    Response.WriteFile(path);
    Response.End();
}

【讨论】:

  • 谢谢,正在下载中。是不是只能在网页浏览器上阅读。
  • 非常感谢,它解决了我的pdf文件问题。请看看ms-word类型的文件是否可行。
  • 如果你想为 word 文档做 MIME 类型,谷歌 mime ms-word,你可以修改/添加这些扩展的 switch 语句。
  • 上面的forceDownload有什么用。
  • 使用 forceDownload,您可以在用户的​​浏览器上打开一个“另存为”对话框(除非他们禁用该对话框,否则它会自动转到他们的下载目录)。否则,如果它知道如何打开,它可能会在他们的浏览器中打开。
【解决方案2】:

您只能通过浏览器的插件在浏览器中阅读 pdf 文件,可从此处下载: http://kb2.adobe.com/cps/331/331025.html

为了在浏览器中正确查看文件,您应该为其设置 mime 类型:

context.Response.ContentType = "application/pdf";
context.Response.AppendHeader("Content-Disposition", "attachment; filename = " + fileName);

有关 Mime 类型的更多信息: http://www.w3schools.com/media/media_mimeref.asp

【讨论】:

    【解决方案3】:

    您的方法读取文件的原始内容。 Txt-Files 正确显示是因为它们的内容是纯文本,doc/rtf/pdf 和其他格式需要专门的控件才能正确显示。

    【讨论】:

      猜你喜欢
      • 2019-03-30
      • 1970-01-01
      • 2021-12-04
      • 1970-01-01
      • 2021-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多