@unsstrennen

Как организовать сохранение файла для пользователя?

На базе данных есть таблица, для которой необходимо организовать экспорт в csv формат.

На сайте была создана кнопка, к которой была привязана данная функция js:
function export_csv() {
		$.ajax({
				url: '/prepare_csv',
				method: 'post',
				dataType: 'html',
				  success: function() {
					window.open('static/temp/out.csv', '_blank');
					}
				});
    }

Буквально, на сервер отправляется запрос, функция готовит . csv файл и кладет его в папку /static/temp, когда запрос на сервер успешно выполнен, всплывающим окном открывается и скачивается полученный файл. Но проблема заключается в том, что браузеры сохраняют этот файл в кэш, и в последствии при наличии изменений в бд и в файле, идущем на экспорт, продолжает скачиваться старая версия файла. Новая начинает скачиваться только в случае, если вручную почистить кэш браузера. К тому же, IE автоматически блокирует всплывающие окна.
  • Вопрос задан
  • 93 просмотра
Пригласить эксперта
Ответы на вопрос 2
NeiroNx
@NeiroNx
Программист
function export_csv() {
    $.ajax({
        url: '/prepare_csv',
        method: 'post',
        dataType: 'html',
          success: function() {
          window.open('static/temp/out.csv?_='+(new Date()).ValueOf(), '_blank');
          }
        });
    }
Ответ написан
Комментировать
inoise
@inoise
Solution Architect, AWS Certified, Serverless
генерировать уникальный файл и отдавать адрес на него в ответе, по которому и переходить.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы