Вопрос

У меня есть текстовый документ, который отлично открывается на сервере, но когда я загружаю его с помощью события нажатия кнопки на моем веб-сайте, он становится неправильным.Я использую приведенный ниже код при нажатии кнопки, чтобы загрузить документ.помогите пожалуйста решить проблему:я использую .net framework 3.5

 Response.Clear();
 Response.AddHeader("Content-Disposition", "attachment; filename=StandardLetter" + _responseId.ToString() + ".doc");
 Response.ContentType = "application/octet-stream";

 Response.TransmitFile (Server.MapPath("~/document/letter/StandardLetter" + _responseId.ToString() + ".doc"));
Это было полезно?

Решение

Хорошо, вот код, который я использую, это VB, но легко преобразуется;)

 Response.ContentType = "application/pdf"
        Dim byteArray As Byte() = File.ReadAllBytes(MergedFile)

        Response.AddHeader("Content-Disposition", "attachment;filename=""" & ShortFilename & """")
        Response.AddHeader("Content-Length", byteArray.Length)
        Response.BinaryWrite(byteArray)
        Response.Flush()
        Response.End()
.

Это работает для PDF и изменив .ContentType, чтобы Excel выплает это тоже .. Итак, я предполагаю, что это займет любой тип MIME.Удачи!

Я беру свой документ PDF под названием MergedFile и преобразовать его в байт (), я даю ему «шорт знамена», который можно ввести пользователь.Длина содержимого очень важно ..

Другие советы

У вас есть Response.End() после того кода, который вы опубликовали?В противном случае вы получите дополнительный код «html» из файла aspx, добавленный к передаваемому файлу, что приведет к его повреждению.

РЕДАКТИРОВАТЬ
Как упомянул Акшай Ананд, лучшим способом было бы позвонить HttpContext.Current.ApplicationInstance.CompleteRequest(); вместо Response.End() см. документы.Смотрите также этот вопрос.

вместо этого попробуйте:

Response.ContentType ="application/msword";
.

Я не пользуюсь словом, но для Excel я использую:

Response.ContentType = "application/x-msexcel"
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top