@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 автоматически блокирует всплывающие окна.
  • Вопрос задан
  • 85 просмотров
Пригласить эксперта
Ответы на вопрос 3
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
генерировать уникальный файл и отдавать адрес на него в ответе, по которому и переходить.
Ответ написан
sashabeep
@sashabeep
Дней без вопросов про Slick на тостере : 0
Либо в файл записывать к названию рандомное значение, либо выдавать его с заголовком, чтобы браузер перезакачивал всегда, запрет кэширования, и т.п.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
26 февр. 2020, в 05:15
5000 руб./за проект
26 февр. 2020, в 01:14
600 руб./в час
26 февр. 2020, в 01:13
1500 руб./за проект