Я реализовал базовую загрузку / выгрузку файлов поверх хранилища данных AppEngine.
Функциональность, которую я хочу, заключается в том, что файл с именем «base.c» будет открыт в виде текстового файла.
поэтому я сделал следующее:
(конечно, мой код для общего случая, но этот конкретный пример иллюстрирует проблему)
resp.setContentType("text/plain");
resp.setHeader("Content-Disposition", "inline; filename=base.c");
Это откроет его как текстовый файл в браузере, который как раз то, что мне нужно.
Но я также хочу, чтобы, когда пользователь использовал опцию браузера «сохранить страницу как ...», он предлагал исходное имя «base.c». Это делает именно это в Firefox (6), но по умолчанию дает имя «download» в chrome (15) и safari (5).
Еще хуже - при выборе base.c в качестве имени файла chrome предупреждает пользователя, что это неправильное расширение, и запрашивает подтверждение для продолжения.
Теперь, если я использую «attachment» вместо «inline», он не открывает файл, а загружает его с именем right .
Что я могу сделать, чтобы сохранить по умолчанию как .. name быть "base.c"?
Это ошибка браузера или я неправильно использую заголовки HTTP?
(если это поможет, все тесты были на OSX 10.6, и сайт загрузки имеет вид:
HTTP: //------.appspot.com/download имя = base.c )