Вопрос

Я использую Symfony2 Framework и использую следующий код для экспорта файла XML:

$response->setStatusCode(200);
$response->headers->set('Content-Type', 'application/xml');
$response->headers->set('Content-Description', 'Submissions Export');
$response->headers->set('Content-Disposition', 'attachment; filename="' . $filename .'"');
$response->headers->set('Content-Transfer-Encoding', 'binary');
$response->headers->set('Pragma', 'no-cache');
$response->headers->set('Expires', '0');

Я не имеет значения, принимаю ли я «контент-передачу» или «прагма» или все из них, кроме «типа контента» и «контента-распределения». Результат в хроме всегда: «файл имени, привязанность» (без «). В Firefox это работает нормально.

Так, например, если у меня есть файл с именем home.xml Firefox, загрузит Home.xml, тогда как Chrome даст мне Home.xml-, вложение.

Это было полезно?

Решение

Я знаю, что это довольно старая дискуссия, но если кто -то попадет сюда в поисках помощи с этим, я решил, что Chrome, кажется, хочет получить полуколон в конце имени файла, а затем он счастлив. Как в (VBScript):

Response.AddHeader "Content-Disposition", "attachment;filename=Something.xls;"

Это исправило это для меня. -Даве

Другие советы

У меня была та же проблема в Zend, потому что я нашел много не работающих вещей, которые я хотел добавить в этот пост свой ANWSER. Поскольку мне потребовалось некоторое время, чтобы решить, что больше пользователей и разработчиков хотели бы знать, как я его решил. Я добавляю это как раз перед моим вызовом Fopen.

header('Content-Disposition: attachment; filename='.time().'.csv');

Решил проблему для меня. Прежде чем я использовал контекст, переключал то, что было багги, но теперь это работает как очарование. Не забудьте удалить предыдущие заголовки расположения контента, поэтому вы можете получить ошибку двойного заголовка.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top