Итак, скажем, у вас есть переменная «данные», данные затем сохраняются в формате JSON и преобразуются в строку с использованием JSON.stringify(data). Как бы вы взяли эти данные JSON и сохранили их как файл x по адресу /pc/locationX?
Возможный дубликат Создайте файл в памяти для загрузки пользователем, а не через сервер
Javascript, работающий в браузере, не может свободно получить доступ к компьютеру и папкам пользователя, представьте себе проблемы с безопасностью! Для хранения данных спецификация html5 предоставляет localStorage и sessionStorage. Вы можете сохранить до 10 МБ в этих хранилищах, и ваш javascript может записывать/загружать данные в любое время, даже когда пользователь закрывает браузер, а затем повторно посещает ваш сайт. Ознакомьтесь с учебным пособием здесь: taniarascia.com/how-to-use-local-storage-with-javascript
Как упоминалось в других комментариях, вы не можете выбрать цель пути загрузки. Однако вы можете использовать следующий метод, чтобы позволить вашим пользователям загружать файл JSON. Возможно, вы уже догадались, что можете использовать следующий метод, поскольку уже знаете, что можете использовать JSON.stringify().
downloadJson(jsonObj, fileName){
const data = 'data:text/json;charset=utf-8,' + encodeURIComponent(JSON.stringify(jsonObj));
const a = document.createElement('a');
a.setAttribute('href', data);
a.setAttribute('download', `${fileName}.json`);
// You might need to uncomment the next line for Firefox
// document.body.appendChild(a);
a.click();
a.remove();
}
Вы также можете открыть другое окно, используя URL-адрес, поэтому вам не нужно использовать <a href = "..">
@cgTag Да, вы абсолютно правы. Я бы написал что-то вроде a.target = '_blank';
.
Однако вам следует проверить использование a.target = '_blank';
, так как некоторые браузеры, такие как Chrome и Safari, обрабатывают их по-разному.
Фантастический! еще лучше иметь загружаемый файл, большое спасибо!
Как указано в комментариях выше, использование .target - это единственный способ заставить его работать, например, с firefox, используя a.setAttribute('target', '_blank').... однако он по-прежнему не работает на границе Интернета, какие-либо предложения?
@ ob34, если честно, я не уверен насчет Edge. Я думаю, что window.open(url, '_blank') работает, но сначала вы должны проверить его на своей машине!
Хм .. Если нет, я действительно просматривал эту ссылку, когда искал ответы. Кто-нибудь из них действительно работает? stackoverflow.com/questions/4907843/…
localStorage.setItem('пользователь', JSON.stringify(пользователь)); Затем, чтобы получить его из хранилища и снова преобразовать в объект:
var user = JSON.parse(localStorage.getItem('user')); Если нам нужно удалить все записи магазина, мы можем просто сделать:
локальное хранилище.очистить();
вы не можете контролировать, где он сохраняется через браузер