Я хочу записать данные в существующий файл, используя JavaScript. Я не хочу печатать это на консоли. Я хочу на самом деле записать данные в abc.txt
. Я прочитал много ответов на вопросы, но каждый, где они печатают на консоли. в каком-то месте они дали код, но он не работает. Поэтому, пожалуйста, кто-нибудь может мне помочь Как записать данные в файл.
Я сослался на код, но он не работает: ошибка выдачи:
Uncaught TypeError: Неверный конструктор
на хром и
SecurityError: операция небезопасна.
на Мозилле
var f = "sometextfile.txt";
writeTextFile(f, "Spoon")
writeTextFile(f, "Cheese monkey")
writeTextFile(f, "Onion")
function writeTextFile(afilename, output)
{
var txtFile =new File(afilename);
txtFile.writeln(output);
txtFile.close();
}
Так можем ли мы на самом деле записывать данные в файл, используя только Javascript или НЕ?
javascript
html
pareshm
источник
источник
Ответы:
Некоторые предложения для этого -
источник
Вы можете создавать файлы в браузере, используя
Blob
иURL.createObjectURL
. Все последние браузеры поддерживают это .Вы не можете напрямую сохранить созданный вами файл, так как это может вызвать серьезные проблемы с безопасностью, но вы можете предоставить его как ссылку для скачивания для пользователя. Вы можете предложить имя файла через
download
атрибут ссылки в браузерах, которые поддерживают атрибут загрузки. Как и при любой другой загрузке, пользователь, загружающий файл, будет иметь последнее слово в имени файла.Вот пример, который использует эту технику для сохранения произвольного текста из
textarea
.Если вы хотите немедленно начать загрузку , вместо того , чтобы требовать от пользователя нажать на ссылку, вы можете использовать событие мыши , чтобы имитировать щелчок мыши по ссылке , как Lifecube «s ответ сделал. Я создал обновленный пример, который использует эту технику.
источник
URL
). Установка имени файла не будет работать в Safari, потому что он все еще не реализовалdownload
атрибут .\n
для представления новых строк, как это делают программы UNIX. Вы, вероятно, просматриваете его в программе Windows, такой как «Блокнот», которая не отображает\n
символ в виде новой строки . Если вы хотите , чтобы новые строки правильно отображаются в блокноте и некоторые другие программы для Windows, прежде чем положить текст вBlob
сменяют друг\n
с\r\n
:text = text.replace(/\n/g, '\r\n')
.mouseover
ссылке, но в зависимости от того, сколько он обрабатывает, это может не сработать.Если вы говорите о браузерном JavaScript, вы не можете записывать данные напрямую в локальный файл по соображениям безопасности. Новый API HTML 5 позволяет только читать файлы.
Но если вы хотите записать данные и разрешить пользователю загружать файлы как локальные. работает следующий код:
использовать это:
download('the content of the file', 'filename.txt', 'text/plain');
источник
Вышеуказанный ответ полезен, но я нашел код, который поможет вам загрузить текстовый файл непосредственно по нажатию кнопки. В этом коде вы также можете изменить,
filename
как вы хотите. Это чистая функция JavaScript с HTML5. Работает для меня!источник
createObjectURL
. В отличие от большинства вещей в JS, объекты, которые вы создаете с его помощью, не собираются автоматически, когда на них больше нет ссылок; они только мусор, когда страница закрывается. Поскольку вы не используетеURL.revokeObjectURL()
в этом коде для освобождения памяти, использованной последним вызовом, у вас есть утечка памяти; если пользователь звонитsaveTextFile
несколько раз, он будет продолжать использовать все больше и больше памяти, потому что вы никогда не освобождали ее.Пытаться
источник
В случае, если невозможно использовать новое
Blob
решение, которое наверняка является лучшим решением в современном браузере, все же возможно использовать этот более простой подход, который имеет ограничение на размер файла:источник
Используйте код, указанный пользователем @ useless-code выше ( https://stackoverflow.com/a/21016088/327386 ) для создания файла. Если вы хотите загрузить файл автоматически, передайте только
textFile
что созданный файл этой функции:источник
Я нашел хорошие ответы здесь, но также нашел более простой способ.
Кнопка для создания большого двоичного объекта и ссылки для скачивания может быть объединена в одну ссылку, поскольку элемент ссылки может иметь атрибут onclick. (Обратное кажется невозможным, добавление ссылки к кнопке не работает.)
Вы можете стилизовать ссылку как кнопку, используя
bootstrap
все еще чистый javascript, за исключением стиля.Комбинация кнопки и ссылки на скачивание также уменьшает код, так как
getElementById
требуется меньше таких уродливых вызовов.В этом примере требуется всего лишь одно нажатие кнопки, чтобы создать текстовый блоб и загрузить его:
источник
Да, это возможно, здесь код
источник