Поврежденный png файл .Net MVC FileResult, один байт - PullRequest
1 голос
/ 04 ноября 2011

У нас есть действие для загрузки файла изображения.код

public virtual FileResult Attachment(Guid Id)
        {
            ...code for attachment..

            Response.AddHeader("content-disposition", "attachment; filename=" + attachment.FileName);
            Response.AddHeader("content-type", attachment.ContentType);
            Response.AddHeader("cache-control", "must-revalidate");
            return File(attachment.Content, attachment.ContentType);

        }

Когда мы проверяем это действие, мы всегда получаем поврежденный файл.Я сравнил поврежденный файл с оригинальным пользователем notepad ++ и обнаружил, что в файл добавлен один символ новой строки.Я удалил новую строку в блокноте ++, и изображение было исправлено.

Мы проверили содержимое вложения и уверены, что оно было правильным.

Мы работаем с .net mvc 3. Тип контента, который мы использовали для png, это "image / png"

Ответы [ 2 ]

1 голос
/ 04 ноября 2011

Fiddler результат (т.е. fiddler2.com) и посмотрите на заголовки и результат.Вы также можете сохранить результаты и проверить файл.Новая строка в начале или в конце?если начало, его вероятные заголовки.Если это в конце, запускаете ли вы какие-либо ActionFilters, которые могли бы добавить пустой результат (или вы так думаете), который фактически является добавленной новой строкой?Проверьте это с другим файлом - те же результаты?

Проверьте это на другой системе, если это возможно - те же результаты?

1 голос
/ 04 ноября 2011

Проверьте, какие другие заголовки уже были заполнены в ответе до (или после) добавления ваших пользовательских заголовков.Возможно, вы получаете некоторые посторонние заголовки, которые вызывают проблему.

Это может быть так же просто, как вызов ClearHeaders

инструмента, такого как Live Http HeadersАддон Firefox также может быть полезен.

...