Saya ingin Menulis Data ke file yang ada menggunakan JavaScript. Saya tidak ingin mencetaknya di konsol. Saya ingin menulis data abc.txt
. Saya membaca banyak pertanyaan tetapi di mana mereka mencetak pada konsol. di beberapa tempat mereka telah memberikan kode tetapi tidak berfungsi. Jadi tolong ada yang bisa membantu saya. Bagaimana sebenarnya menulis data ke File.
Saya merujuk kode tetapi tidak berfungsi: kesalahan pemberiannya:
UnEught TypeError: konstruktor ilegal
pada chrome dan
SecurityError: Operasi tidak aman.
di Mozilla
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();
}
Jadi bisakah kita benar-benar menulis data ke file hanya menggunakan Javascript atau TIDAK?
javascript
html
Pareshm
sumber
sumber
Jawaban:
Beberapa saran untuk ini -
sumber
Anda dapat membuat file di browser menggunakan
Blob
danURL.createObjectURL
. Semua browser terbaru mendukung ini .Anda tidak dapat langsung menyimpan file yang Anda buat, karena itu akan menyebabkan masalah keamanan besar-besaran, tetapi Anda dapat menyediakannya sebagai tautan unduhan untuk pengguna. Anda dapat menyarankan nama file melalui
download
atribut tautan, di browser yang mendukung atribut unduhan. Seperti halnya unduhan lainnya, pengguna yang mengunduh file tersebut akan memiliki hak suara terakhir atas nama file tersebut.Berikut adalah contoh yang menggunakan teknik ini untuk menyimpan teks sewenang-wenang dari a
textarea
.Jika Anda ingin segera memulai download bukan membutuhkan pengguna untuk mengklik pada link, Anda dapat menggunakan peristiwa mouse untuk mensimulasikan klik mouse pada link sebagai Lifecube 's jawaban lakukan. Saya telah membuat contoh yang diperbarui yang menggunakan teknik ini.
sumber
URL
). Pengaturan nama file tidak akan berfungsi di Safari karena masih belum menerapkandownload
atribut .\n
untuk mewakili baris baru seperti yang dilakukan program UNIX. Anda mungkin melihatnya di program Windows, seperti Notepad, yang tidak membuat\n
karakter sebagai baris baru . Jika Anda ingin baris baru akan benar diberikan di Notepad dan beberapa program Windows lainnya, sebelum meletakkan teks ke dalamBlob
mengganti setiap\n
dengan\r\n
:text = text.replace(/\n/g, '\r\n')
.mouseover
tautan, tetapi tergantung pada seberapa banyak pemrosesan yang dilakukan yang mungkin tidak bekerja dengan baik.Jika Anda berbicara tentang javascript browser, Anda tidak dapat menulis data langsung ke file lokal karena alasan keamanan. API HTML 5 baru hanya dapat memungkinkan Anda membaca file.
Tetapi jika Anda ingin menulis data, dan memungkinkan pengguna untuk mengunduh sebagai file ke lokal. kode berikut berfungsi:
untuk menggunakannya:
download('the content of the file', 'filename.txt', 'text/plain');
sumber
Jawaban di atas bermanfaat tetapi, saya menemukan kode yang membantu Anda mengunduh file teks langsung pada klik tombol. Dalam kode ini Anda juga dapat mengubah
filename
sesuai keinginan. Ini fungsi javascript murni dengan HTML5. Bekerja untukku!sumber
createObjectURL
. Tidak seperti kebanyakan hal di JS, objek yang Anda buat dengannya tidak secara otomatis dikumpulkan ketika tidak ada lagi referensi tentang mereka; mereka hanya sampah yang dikumpulkan ketika halaman ditutup. Karena Anda tidak menggunakanURL.revokeObjectURL()
kode ini untuk membebaskan memori yang digunakan oleh panggilan terakhir, Anda mengalami kebocoran memori; jika pengguna meneleponsaveTextFile
beberapa kali, mereka akan terus mengkonsumsi lebih banyak dan lebih banyak memori karena Anda tidak pernah merilisnya.Mencoba
sumber
Dalam hal ini tidak mungkin untuk menggunakan
Blob
solusi baru , yang pasti solusi terbaik di browser modern, masih mungkin untuk menggunakan pendekatan yang lebih sederhana ini, yang memiliki batas ukuran file dengan cara:sumber
Gunakan kode oleh pengguna @ kode tidak berguna di atas ( https://stackoverflow.com/a/21016088/327386 ) untuk menghasilkan file. Jika Anda ingin mengunduh file secara otomatis, berikan
textFile
yang baru saja dibuat untuk fungsi ini:sumber
Saya menemukan jawaban yang bagus di sini, tetapi juga menemukan cara yang lebih sederhana.
Tombol untuk membuat gumpalan dan tautan unduhan dapat digabungkan dalam satu tautan, karena elemen tautan dapat memiliki atribut onclick. (Kebalikannya tampaknya tidak mungkin, menambahkan href ke tombol tidak berfungsi.)
Anda dapat menata tautan dengan menggunakan tombol
bootstrap
, yang masih berupa javascript murni, kecuali untuk penataan.Menggabungkan tombol dan tautan unduhan juga mengurangi kode, karena lebih sedikit dari
getElementById
panggilan buruk itu diperlukan.Contoh ini hanya perlu satu klik tombol untuk membuat gumpalan teks dan mengunduhnya:
sumber
Ya itu mungkin di sini kodenya
sumber