Это можно сделать только на стороне клиента, в браузере, который принимает URI данных :
data:application/csv;charset=utf-8,content_encoded_as_url
В вашем примере URI данных должен быть:
data:application/csv;charset=utf-8,Col1%2CCol2%2CCol3%0AVal1%2CVal2%2CVal3%0AVal11%2CVal22%2CVal33%0AVal111%2CVal222%2CVal333
Вы можете вызвать этот URI:
- , используя
window.open
- или установив
window.location
- или с помощью якоря
- добавив атрибут загрузки, он будет работать в Chrome, все равно придется тестировать в IE.
Чтобы проверить, просто скопируйте URI выше и вставьте в адресную строку браузера.Или проверьте привязку ниже на странице HTML:
<a download="somedata.csv" href="data:application/csv;charset=utf-8,Col1%2CCol2%2CCol3%0AVal1%2CVal2%2CVal3%0AVal11%2CVal22%2CVal33%0AVal111%2CVal222%2CVal333">Example</a>
Чтобы создать контент, получая значения из таблицы, вы можете использовать table2CSV и выполнить:
var data = $table.table2CSV({delivery:'value'});
$('<a></a>')
.attr('id','downloadFile')
.attr('href','data:text/csv;charset=utf8,' + encodeURIComponent(data))
.attr('download','filename.csv')
.appendTo('body');
$('#downloadFile').ready(function() {
$('#downloadFile').get(0).click();
});
Большинство, если не все, версии IE не поддерживают навигацию к каналу передачи данных, поэтому должен быть осуществлен взлом, часто с iframe
.Используя iFrame
в сочетании с document.execCommand('SaveAs'..)
, вы можете получить аналогичное поведение в большинстве используемых в настоящее время версий IE.