Firefox игнорирует Response.ContentType - PullRequest
4 голосов
/ 28 августа 2009

У меня есть следующий код, который по сути "передает" файл с одного сервера на другой. Он отлично работает в IE, но Firefox, похоже, игнорирует заголовок Content-Type и всегда передает файлы (MP3) как text/html.

Это не главная проблема, но я бы хотел, чтобы она работала корректно во всех браузерах, так может кто-нибудь помочь? Кроме того, если есть лучший / более эффективный способ сделать это, пожалуйста, напишите об этом!

FileInfo audioFileInfo = new FileInfo(audioFile);
HttpWebRequest downloadRequest = (HttpWebRequest) WebRequest.Create(audioFile);
byte[] fileBytes;

using (HttpWebResponse remoteResponse = (HttpWebResponse) downloadRequest.GetResponse())
{
  using (BufferedStream responseStream = new BufferedStream(remoteResponse.GetResponseStream()))
  {
    fileBytes = new byte[remoteResponse.ContentLength];
    responseStream.Read(fileBytes, 0, fileBytes.Length);

    Response.ClearContent();
    // firefox seems to ignore this...
    Response.ContentType = Utilities.GetContentType(audioFileInfo);
    // ... and this
    //Response.ContentType = remoteResponse.ContentType;
    Response.AddHeader("Content-Disposition", string.Format("attachment; filename=\"{0}\"", audioFileInfo.Name));
    Response.AddHeader("Content-Length", remoteResponse.ContentLength.ToString());
    Response.BinaryWrite(fileBytes);
    Response.End();
  }
}

Ответы [ 5 ]

6 голосов
/ 03 сентября 2009

Попробуйте добавить Response.ClearHeaders() перед вызовом ClearContents(), как упомянуто x2, и отправить файл как application/octet-stream:

Response.ClearHeaders();
Response.ClearContent();
Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-Disposition", "attachment; filename=\"blah\""); 
...

У меня работает, когда мне нужно передать загружаемые файлы (не обязательно mp3) клиенту.

3 голосов
/ 04 сентября 2009

Если вы еще этого не сделали, мой первый шаг - проверить заголовки, используя что-то вроде Live HTTP Headers плагин firefox или fiddler , чтобы убедиться, что они вы ожидаете.

0 голосов
/ 04 сентября 2009

Является ли результат тем же, если вы используете Response.Clear () вместо только Response.ClearContent ()?

0 голосов
/ 02 сентября 2009

Типичный тип для этого аудио / mp3. Какую проблему вы видите?

Здесь также есть ссылка здесь относительно Quicktime угона файлов MP3.

0 голосов
/ 28 августа 2009

Я не уверен, но, возможно, поможет очистка заголовков и добавление mime-type

Response.ClearHeaders();
Response.AddHeader("MIME Type",Utilities.GetContentType(audioFileInfo));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...