Am încercat să deschid fișierul cu
window.open("file:///D:/Hello.txt");
Browser-ul nu permite deschiderea unui fișier local în acest fel, probabil din motive de securitate. Vreau să utilizați fișierul's de date în partea de client. Cum pot citi fișiere local în JavaScript?
Aici's un exemplu folosind FileReader
:
function readSingleFile(e) {
var file = e.target.files[0];
if (!file) {
return;
}
var reader = new FileReader();
reader.onload = function(e) {
var contents = e.target.result;
displayContents(contents);
};
reader.readAsText(file);
}
function displayContents(contents) {
var element = document.getElementById('file-content');
element.textContent = contents;
}
document.getElementById('file-input')
.addEventListener('change', readSingleFile, false);
<input type="file" id="file-input" />
<h3>Contents of the file:</h3>
<pre id="file-content"></pre>
http://dev.w3.org/2006/webapi/FileAPI/
De HTML5 fileReader afla vă permite pentru a procesa fișierele locale, dar acestea TREBUIE să fie selectate de către utilizator, nu puteți merge înrădăcinare despre utilizatorii de pe disc în căutarea pentru fișiere.
Eu folosesc în prezent cu dezvoltarea versiuni de Chrome (6.x). Eu nu't știu ce alte browsere suport.
Pentru că nu am o viata si vreau cele 4 puncte de reputație atât vă pot arăta dragostea mea (upvote răspunsuri de) oameni care se pricep la programare am'am împărtășit adaptarea Paolo Moretti's cod. Doar folosi openFile(_function să fie executat cu conținutul fișierului ca prima parameter_
)`.
function dispFile(contents) {
document.getElementById('contents').innerHTML=contents
}
function clickElem(elem) {
// Thx user1601638 on Stack Overflow (6/6/2018 - https://stackoverflow.com/questions/13405129/javascript-create-and-save-file )
var eventMouse = document.createEvent("MouseEvents")
eventMouse.initMouseEvent("click", true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null)
elem.dispatchEvent(eventMouse)
}
function openFile(func) {
readFile = function(e) {
var file = e.target.files[0];
if (!file) {
return;
}
var reader = new FileReader();
reader.onload = function(e) {
var contents = e.target.result;
fileInput.func(contents)
document.body.removeChild(fileInput)
}
reader.readAsText(file)
}
fileInput = document.createElement("input")
fileInput.type='file'
fileInput.style.display='none'
fileInput.onchange=readFile
fileInput.func=func
document.body.appendChild(fileInput)
clickElem(fileInput)
}
Click the button then choose a file to see its contents displayed below.
<button onclick="openFile(dispFile)">Open a file</button>
<pre id="contents"></pre>
Încercați
function readFile(file) {
return new Promise((resolve, reject) => {
let fr = new FileReader();
fr.onload = x=> resolve(fr.result);
fr.readAsText(file);
})}
function readFile(file) {
return new Promise((resolve, reject) => {
let fr = new FileReader();
fr.onload = x=> resolve(fr.result);
fr.readAsText(file);
})}
async function read(input) {
msg.innerText = await readFile(input.files[0]);
}
<input type="file" onchange="read(this)"/>
<h3>Content:</h3><pre id="msg"></pre>
Xmlhttp cerere metodă nu este valabil pentru fișierele de pe discul local, deoarece browser-ul de securitate nu ne permite să o facă.Dar putem suprascrie browser-ul de securitate prin crearea unui shortcut->click dreapta->proprietăți În țintă "... browser cale locație.exe" append-permite-fișiere de acces-de-fișiere.Acest lucru este testat pe chrome,cu toate acestea, trebuie avut grijă ca toate ferestrele de browser ar trebui să fie închis, iar codul ar trebui să fi rulat de browser-ul deschis prin această comandă rapidă.
Javascript nu poate, de obicei, acces la fișierele locale în browserele noi dar obiectul XMLHttpRequest poate fi folosit pentru a citi fișierele. Deci, este de fapt Ajax (nu Javascript), care este citit dosarul.
Dacă doriți să citiți fișierul `abc.txt poți scrie codul ca:
var txt = '';
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function(){
if(xmlhttp.status == 200 && xmlhttp.readyState == 4){
txt = xmlhttp.responseText;
}
};
xmlhttp.open("GET","abc.txt",true);
xmlhttp.send();
Acum txt
conține conținutul fișierului abc.txt.