Safari и загрузка файла проблема - PullRequest
0 голосов
/ 13 февраля 2010

У меня есть веб-сайт, где я позволяю пользователям скачивать mp3 файлы. Фрагмент кода (частичный) выглядит следующим образом:

Response.Clear();
Response.AppendHeader("Content-Disposition:", "attachment; filename=mike.mp3");
Response.AppendHeader("Content-Length", "1000");
Response.ContentType = "audio/mpeg3";

Клиент пожаловался, что не может загрузить этот файл в Safari на Mac 10.4.11. (Он просто отображает файл mp3 на странице) Итак, я скачал Safari для Windows и не могу воссоздать проблему. Итак, я думаю, что есть разница между Safari для Windows и Safari для Mac?

У меня нет машины Mac. Как мне устранить эту проблему?

Ответы [ 2 ]

3 голосов
/ 13 февраля 2010

Может быть, двоеточие после имени заголовка?

Да, этого точно не должно быть.

Кроме того, правильный тип мультимедиа MIME для MP3 - audio/mpeg. Этот тип охватывает тесно связанные форматы MPEG layer-1, layer-2 (.mp2) и layer-3 (.mp3) (но не MPEG-4 AAC, который сильно отличается).

Браузеры не распознают нестандартный (не зарегистрированный в IANA) тип audio/mpeg3, так что никто не догадывается, как они решат обращаться с ними. К сожалению, это часто приводит к каким-то жутким догадкам по анализу содержания, которые могут привести к совершенно неуместным результатам, когда браузеры видят ложную строку, которая, по их мнению, свидетельствует об одном (неправильном) типе файла.

0 голосов
/ 13 февраля 2010

Интересно. У меня нет asp.net, поэтому я создал это веб-приложение Python:

#!/usr/bin/env python
import werkzeug
@werkzeug.Request.application
def app(request):
    f = open("audio.mp3")
    r = werkzeug.Response(f, content_type="audio/mpeg3")
    r.headers.add("Content-Disposition", "attachment; filename=mike.mp3")
    r.headers.add("Content-Length", "1000")
    return r
werkzeug.run_simple("localhost", 4000, app)

Даже если Content-Type (и Content-Length) неверны, Safari просто загружает файл. У меня Safari версии 4.0.4 (6531.21.10) на Mac OS X 10.6.2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...