2012-01-07 1 views
4

У меня есть GZipped JavaScript-файл, который я кодирую с данными: URI.Как заставить расширение имени загруженного gzipped URI данных?

Например:

<a href="data:application/x-gzip;base64,FOO">My Javascript File</a> 

Когда щелкает правой кнопкой мыши пользователя и сохраняет этот файл (в Chrome) Я хотел бы имя результирующего файла будет download.js.gz. Таким образом, когда пользователь дважды щелкает этот файл (в Mac OS X), он распаковывается и переименовывается правильно на download.js, и они могут легко просматривать содержимое.

Проблема заключается в том, что когда я использую тип контента text/javascript (или application/x-javascript), файл сохраняется как download.js. И когда я использую тип контента application/x-gzip, файл сохраняется как download.gz.

Есть ли способ, чтобы файл был сохранен как .js.gz?

Вот рабочий пример обоих звеньев: http://jsfiddle.net/xYm8w/3/

Файл должен быть URI данных, а не ссылка на реальный файл. Я попытался изменить текст между тегами <a>, но это ничего не влияет.

+0

Дубликат этого: http://stackoverflow.com/questions/283956/is-there-any-way-to-specify-a-sued-filename-when-using-data-uri –

ответ

4

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

В Chrome вы можете использовать атрибут download тега <a> (который я узнал по this answer). Пример: http://jsfiddle.net/pYpqW/

+1

Исправить. Согласно спецификациям (http://www.ietf.org/rfc/rfc2397), нет способа указать имя файла. URL-адрес данных следует рассматривать как поток данных, а не файл. –