2017-12-01 3 views
0

Ich habe ein Array von Datei zu speichern, indem Sie eine Schleife verwenden und ich erzeuge den Namen jeder Datei. Ich möchte die Datei direkt (in nicht interaktiver Weise) speichern, ohne mich zu bitten, dies zu bestätigen. Wie kann ich ? Hier ist mein Code-Datei zum SpeichernJS FileSaver nicht interaktiv

var url = img.src.replace(/^data:image\/[^;]/, 'data:application/octet-stream'); 

var xhr = new XMLHttpRequest(); 

xhr.responseType = 'blob'; //Set the response type to blob so xhr.response returns a blob 
xhr.open('GET', url , true); 

xhr.onreadystatechange = function() { 
    if (xhr.readyState == xhr.DONE) { 
     var filesaver = require('file-saver'); 
     filesaver.saveAs(xhr.response, nameFile); // nameFile the name of file to be saved 
    } 
}; 
xhr.send(); //Request is sent 
+0

Soweit ich das beurteilen kann, kann das File-Saver-Paket Dateien nicht auf interaktive Weise speichern. – lionel

+0

haben Sie einen Vorschlag zum Speichern von Datei in js –

+0

das beste, was ich mir vorstellen könnte, ist eine Zip-Datei erstellen, packen Sie alle Dateien, geben Sie das an den Benutzer mit einem Speichern Popup. Es gibt keine automatische Dateispeicherfunktion in Browsern. das wäre ein ernstes Sicherheitsrisiko. – lionel

Antwort

0

Schließlich ich eine Lösung zu finden, anstatt Datei zu speichern, ich schreibe es durch einen neuen zu erstellen.

for (var i = 0; i < tabForm.length; i++) { 

    var imgData = $('#affichageqr')[0].childNodes[1].childNodes[0].src; 

    var data = imgData.replace(/^data:image\/\w+;base64,/, ''); 

    fs.writeFile(qrcode.getNomQRCode()+'.jpeg', data, {encoding: 'base64'}, function(err){ 
     if (err) { 
     console.log('err', err); 
     } 
    console.log('success'); 
    }); 
    }