Как использовать Stream для чтения ZIP-файла из FileResult в ASP.NET MVC 2 - PullRequest
0 голосов
/ 17 октября 2011

аХи все:

Я создал файл .zip на моем веб-сайте, пишет 1110_1200_events.zip. Я использовал код для возврата .zip файлов в FileResult .

    public FileResult GetEvents()
    {
        string fileName = "1020_1200_events.zip",
               filePath = Server.MapPath("~/public/Event/" + fileName);

        return File(filePath, "application/zip", fileName);
    }

Проблема заключается в том, что если я использовал WebRequest для чтения потока файла, я получил исключение I / O в webResponse.GetResponseStream ( ) .Read (buffer, 0, buffer.Length): Невозможно прочитать данные из транспортного соединения: существующее соединение было принудительно закрыто удаленным хостом .

Ниже приведен фрагмент кода. Как мне обойти это? Спасибо.

        var webRequest = WebRequest.Create(GetSPIUrl() + "SB/GetEvents");
        webRequest.Method = "POST";
        webRequest.ContentType = "application/zip";

        StreamWriter writer = new StreamWriter(webRequest.GetRequestStream());
        writer.WriteLine();
        writer.Close();
        // Send the data to the webserver
        var webResponse = webRequest.GetResponse();
        var reader = new StreamReader(webResponse.GetResponseStream(), Encoding.UTF8);

        FileInfo fi = new FileInfo("myData.zip");
        using (FileStream fs = fi.OpenWrite())
        {
            byte[] buffer = new byte[8 * 1024];
            int len;
            while ((len = webResponse.GetResponseStream().Read(buffer, 0, buffer.Length)) > 0)
            {
                fs.Write(buffer, 0, len);
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...