Создание текстового файла из строки с помощью JS и html5

Я хочу создать текстовый файл со строкой. в настоящее время я использую функцию, которая принимает массив и превращает его в строку, используя строку, я хочу создать локальный текстовый файл загружает пользователь. я пробовал использовать этот метод

   function createFile(){ //creates a file using the fileLIST list 
    var output= 'Name t Statusn'+ fileLIST[0][0].name+'t'+fileLIST[0][1]+'n';
    var Previous = fileLIST[0];
    for (var i=1; i<fileLIST.length; i++)
        if (fileLIST[i][1] =='none' || fileLIST[i][1] == Previous[1])
            continue
        else {
            Previous = fileLIST[i]
            output = output + fileLIST[i][0].name +'t'+fileLIST[i][1] + 'n';}

    window.open("data:text/json;charset=utf-8," + escape(output));//should create file
    display();  }

Я использую chrome в качестве браузера. также я бы предпочел ответ JS или HTML5.

спасибо заранее

4 ответов


преобразовать object к строке JSON.

var json_string = JSON.stringify(object, undefined, 2);

Примечания:

  1. если у вас уже есть строка, пропустите шаг выше.
  2. если вы не хотите, чтобы он был отформатирован красиво, удалите , undefined, 2.

создайте ссылку для загрузки и нажмите на нее:

var link = document.createElement('a');
link.download = 'data.json';
var blob = new Blob([json_string], {type: 'text/plain'});
link.href = window.URL.createObjectURL(blob);
link.click();

BlobBuilder теперь устарел. Используйте этот код:

https://developer.mozilla.org/en-US/docs/Web/API/Blob#Blob_constructor_example_usage


вместо этого я использовал этот код. он создает ссылку для Загрузки url-адреса файла.

     window.URL = window.webkitURL || window.URL;
    window.BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder ||       window.MozBlobBuilder;
    file = new WebKitBlobBuilder();
    file.append(output); 
    var a = document.getElementById("downloadFile");
    a.hidden = '';
    a.href = window.URL.createObjectURL(file.getBlob('text/plain'));
    a.download = 'filename.txt';
    a.textContent = 'Download file!';
}

также Этот способ добавляет меньше на веб-сайт, что делает его более легким веб-сайтом для медленных соединений. мой html имеет пустой div, в котором это добавляется.

   <div class ='paginationLIST' id='pagination'></div>

Я предлагаю вам использовать скрытые iframe вместо window.open чтобы сделать его "более чистый способ"

и я считаю, что это text/octet-stream, а не text/json для принудительной загрузки. И насколько я знаю, вы не можете указать имя файла.

однако Chrome (18+ я думаю) имеет для своего <a> теги который вы можете указать имя файла вместе с помощью blob: для url.