Excel пытается открыть файл для скачивания в IE - PullRequest
2 голосов
/ 06 марта 2012

У меня есть некоторая неясная проблема, но я постараюсь объяснить все возможное.

У нас есть URL-адреса, сопоставленные с использованием SpringMVC, чтобы при выполнении запроса POST загрузка могла быть инициирована.Например, запрос

POST /request/bobby.html {POST variables:id=5}

вызовет загрузку файла CSV, связанного с идентификатором 5. Проблема заключается в том, что в IE это дает вам возможность открыть или сохранить как.Выбор Open откроет файл CSV, как и предполагалось в MS Excel, но временный файл будет называться bobby.html.Когда пользователь оставляет Excel открытым и пытается загрузить другой идентификатор (скажем, 6), фокус меняется на Excel, но, поскольку запрос по-прежнему указывает на bobby.html, файл не обновляется.Вы должны закрыть файл в Excel, прежде чем новый файл с тем же именем сможет занять его место, но нет сообщения, чтобы сказать пользователю закрыть старый файл.

В идеале, я хочу, чтобы имя файлаизменился, но используемый сервлет Spring был привязан специально к * .html файлам только потому, что у нас есть другие приложения, работающие в том же контейнере с другими расширениями.

Я попытался добавить UUID в запрос, просто чтобы сделать егоВыглядит иначе, чем в Excel / IE, и это работает до некоторой степени ...

POST /request/bobby.html?uuid=<uuid> {POST variables:id=6}

делает его похожим на IE, но Excel по-прежнему сохраняет базовый запрос в качестве имени файла.Это позволило получить предупреждение, но сообщение пользователю о том, что его файл называется «bobby.html» и что он не может открыть другое, может быть более запутанным, чем вообще отсутствие предупреждения.

Я также пытался добавитьчто-то в конце:

POST /request/bobby.html/<uuid> {POST variables:id=6}

Есть идеи, как заставить это работать?Я знаю, что подобные вещи можно реализовать в SpringMVC, но есть ли способ заставить их работать с отображениями сервлетов?

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 29 ноября 2012

Я наконец-то нашел ответ на этот вопрос, и он не имеет ничего общего с именем файла. Я изменил заголовок ответа Content-Type на application/octet-stream вместо application/vnd.ms-excel.

0 голосов
/ 06 марта 2012

Вы пробовали отображение как /request/bobby_{uuid}.html? Таким образом, имя файла будет уникальным каждый раз. Тогда вы можете просто игнорировать переменную uuid.

Я никогда не пробовал это ... просто сумасшедшая мысль.

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