Response.TransmitFile отправка файла нулевого байта - PullRequest
0 голосов
/ 21 февраля 2011

Я пытаюсь скачать zip-файл через пользовательский обработчик.Файл загружается в виде нулевого байта zip-файла.Но оригинальный файл не является нулевым байтом zip-файла.Код ProcessRequest (контекст HttpContext) равен

            String file = Directory.GetFiles(cachePath).FirstOrDefault();
            String filename = Path.GetFileName(file);

            context.Response.AddHeader("Content-Disposition", "attachment;filename=" + filename);
            context.Response.ContentType = "application/zip";
            //byte[] bytes = File.ReadAllBytes(file);
            //context.Response.BinaryWrite(bytes);
            context.Response.TransmitFile(file);
            context.Response.Flush();

Ответы [ 2 ]

0 голосов
/ 21 февраля 2011

Этот код выглядит точно.Я использую практически идентичный фрагмент кода для загрузки файлов на моем веб-сайте.Единственное, что я не вижу, это путь, по которому вы извлекаете файл.Вам может потребоваться выполнить HostingEnvironment.ApplicationPhysicalPath, чтобы получить фактический путь к файлу.

0 голосов
/ 21 февраля 2011

Возможно, вам нужно Content-Length

context.Response.AddHeader("Content-Length", new FileInfo(file).Length.ToString());

Или, может быть, вы пропали без вести ContentType

context.Response.ContentType = "application/octet-stream";

В крайнем случае это может быть связано с кэшированием.

context.Response.Cache.SetNoStore();
...