Чтение файлов в байты не работает должным образом в проекте - PullRequest
0 голосов
/ 06 апреля 2019

У меня странная проблема. Я делаю приложение C # MVC, которое генерирует PDF-файлы и предлагает их для загрузки с помощью кнопки загрузки.

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

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

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

Внезапно я не могу правильно преобразовать файл PDF в byte[], либо с File.ReadAllBytes(), либо с MemoryStream (или любым другим потоком).

Когда я использовал MemoryStream, я получил InvalidOperationException на ReadTimeOut и WriteTimeOut.

Я реализовал код, упомянутый выше, в новом C # MVC Project, и там все работало нормально. Так что проблема должна быть в проекте, в котором я работаю.

1 Ответ

1 голос
/ 07 апреля 2019

Если ваш URL-адрес удаленный, вы должны использовать 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'" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...