Почему я получаю эту ошибку в IE: "Область данных, переданная системному вызову, слишком мала"?
Я создаю файл csv для загрузки с помощью Javascript, и он отлично работает во всем, кроме IE (я тестировал 8 и 10).
В IE8, когда я нажимаю кнопку, чтобы создать и загрузить файл, я получаю сообщение об ошибке и говорит "The data area passed to a system call is too small"
. В IE10, когда я нажимаю кнопку, он просто открывает новую вкладку с URL-адресом, который я создал в адресной строке, но ничего не загружаю.
Любые идеи, что означает эта ошибка?
У меня есть этот код кнопкой:
var csvContent = "data:text/csv;charset=utf-8,";
csvContent += escape(myCSVvariable);
var encodedUri = encodeURI(csvContent);
window.open(encodedUri);
Это связано с этим вопросом, но я начал новый, потому что у меня возникла другая ошибка после изменения некоторых вещей - Как мне создать и загрузить файл csv с помощью Javascript?
Ответы
Ответ 1
Это известная проблема, но есть обходной путь.
Добавьте следующий код
if (navigator.msSaveBlob)
{ // IE 10+
navigator.msSaveBlob(new Blob([csv], { type: 'text/csv;charset=utf-8;' }), "filename.csv");
}
и проблема должна быть решена. Это работает для IE10, я не тестировал его на IE8 (у меня больше нет IE8!)
Обратитесь к:
https://msdn.microsoft.com/library/Hh772331
https://msdn.microsoft.com/library/Hh772298
Источник
Ответ 2
В IE существует ограничение на размер URL.