将文件读取到字节无法在项目中正常工作

时间:2019-04-06 19:01:46

标签: c# asp.net-mvc

我有一个奇怪的问题。我正在制作一个C#MVC应用程序,该应用程序生成PDF并提供带有下载按钮的下载。

public ActionResult Download()
{
    string url = (string)TempData["url"];

    byte[] thePdf = System.IO.File.ReadAllBytes(url);

    return File(thePdf, "application/pdf");
}

突然之间,我无法使用byte[]File.ReadAllBytes()(或任何其他流)将PDF文件正确转换为MemoryStream

当我使用MemoryStream时,在InvalidOperationExceptionReadTimeOut上都得到了WriteTimeOut

我在一个新的C#MVC项目中实现了上述代码,一切正常。因此问题必须出在我正在从事的项目中。

1 个答案:

答案 0 :(得分:1)

如果您的网址是远程网址,则应使用WebClient下载如下数据。

我试图重现您的代码,并且有效。

 public ActionResult Download()
        {
            string url = (string)TempData["url"];

            url = "http://www.iuh.edu.vn/Tuyensinh/QC/TomTatQuyCheThiTHPT2018.pdf";

            using (var client = new WebClient())
            {
                // read data
                byte[] thePdf = client.DownloadData(url);

                return File(thePdf, "application/pdf");

            }

            //byte[] thePdf = System.IO.File.ReadAllBytes(url);

            //return File(thePdf, "application/pdf");
        }

在cshtml中:

<input type="button" value="Download" onclick="window.location.href='/YourController/Download'" />