Вопрос по javascript, createfile, download, html5, file – Создать текстовый файл из строки, используя JS и HTML5

6

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

   function createFile(){ //creates a file using the fileLIST list 
    var output= 'Name \t Status\n'+ 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 ответ.

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

он открывает новую вкладку и ничего не делает. это не создание файла для загрузки GreenGiant
и что не так с этим кодом? Joseph
нет это все локально. я включил --allow-file-access-from-files в chrome, чтобы посмотреть, поможет ли это, но нет. GreenGiant
Код в вопросе JS на стороне сервера? Jon Cram

Ваш Ответ

4   ответа
0

iframe вместоwindow.open сделать его «более чистым методом»;

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

Тем не менее, Chrome (18+ я думаю) имеетdownload attribute for its <a> tags который вы можете указать имя файла вместе с использованиемblob: для URL.

как бы вы использовали iframe для создания файла? изменение & quot; text / json & quot; ничего не изменилось GreenGiant
@GreenGiant посмотрите демонстрацию, которую я предоставил. это скрипка, которая автоматически загружает файл. Кроме того, вместо использованияwindow.open(url)установите вместо этого скрытый URL-адрес iframe.
я получаю сообщение об ошибке при запуске вашей скрипки ошибка & quot; Ресурс интерпретируется как Document, но передается с помощью MIME-типа text / octet-stream: & quot; data: text / octet-stream, foo & quot ;. GreenGiant
4

еса файла.

     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>
может быть, я что-то пропустил, но код не может быть что-то вроде:file = new BlobBuilder потому что вы присвоили этому объекту Webkit или Moz BlodBuilder. Я прав?
14

object в строку JSON.

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

Заметки:

If you already have a string, skip the step above. If you don't want it to be formatted nicely, remove the , 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();

Похожие вопросы