Открытие документов Office 2010 из ошибки C # - PullRequest
3 голосов
/ 16 января 2012

Я пытаюсь загрузить офисные документы для пользователя с помощью

HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=" + file.Name); 
HttpContext.Current.Response.ContentType = MIMETypesDictionary[fileExt];
HttpContext.Current.Response.BinaryWrite(fileArray);

, и мой MIMETypesDictionary имеет это (сокращенно)

    private static readonly Dictionary<string, string> MIMETypesDictionary = new Dictionary<string, string>
      {
        {"doc", "application/msword"},
        {"docx", "application/vnd.openxmlformats-officedocument.wordprocessingml.document"},
        ...
        {"xls", "application/vnd.ms-excel"},  
        {"xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}
        ...
      };

файлы doc и xls прекрасно работают.Ошибка файлов Docx и xlsx в клиентском приложении.

Ошибки Excel

Excel found unreadable content in 'filename.xlsx'. Do you want to recover the contents of this workfbook?

Ошибки в словах

The file filename.docx cannot be opened because there are problems with the contents.

, если я нажимаю Да, он загружается, и документы выглядят нормально.Эта ошибка не будет летать для пользователей, конечно.Я использую правильные типы пантомимы для этих файлов?Я также попробовал application / vnd.ms-word.document.12, application / vnd.ms-excel.12 и application / octet-stream и получил те же ошибки.

Спасибо!

1 Ответ

4 голосов
/ 16 января 2012

решена! пришлось построить код ответа

HttpContext.Current.Response.Clear();
HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=" + file.Name); 
HttpContext.Current.Response.ContentType = MIMETypesDictionary[fileExt];
HttpContext.Current.Response.BinaryWrite(fileArray);
HttpContext.Current.Response.End();
HttpContext.Current.Response.Flush();

и я сохранил значения потока октетов для типов файлов, и он прекрасно работает!

...