2016-12-13 2 views
1

Я пытаюсь написать несколько строк в файл с помощью JavaScript через следующий кодJavaScript - New File() не работает

var txtfile ="../wp-content/plugins/MedicAdvisor/test.txt"; 
    var file = new File("hello",txtfile); 
    //file = fopen("", 3);// opens the file for writing 
    file.open("w"); 

    var currentrow = 0; 
    var nextrow = 0; 
    var type = " "; 
    var noofrows = 0; 
    var noofcells = 0; 
    var contentarray; 
    var row = document.getElementsByTagName('tr'); 
    //get all elements having input tag 
    var inp = document.getElementsByTagName('input'); 
    // traverse through all input tags 
    for (var i=2; i<inp.length; i++){ 
     // see if it is a heckbox 
     if(inp[i].type == "checkbox"){ 
      // see if it is checked 
      if(inp[i].checked == true){ 
       //index of current row 
       currentrow = inp[i].parentNode.parentNode.rowIndex; 
       //event type 
       type = inp[i].parentNode.parentNode.cells[6].innerHTML.trim(); 
       if (type == "cycling_road_race"){ 
        noofrows = 6; 

        for(var j=0; j<noofrows; j++){ 
         noofcells = row[currentrow + j + 1].cells.length; 
         for (var k=1; k<noofcells; k++){ 
          //alert (row[currentrow + j + 1].cells[k].innerHTML.replace('<br>' , ' ')); 
          contentarray.push(row[currentrow + j + 1].cells[k].innerHTML.replace('<br>' , ' ')); 
          file.writeln(row[currentrow + j + 1].cells[k].innerHTML.replace('<br>' , ' ')); 
         } 
        } 
       } 
       else if (type == "cycling_criterium_or_circuit_race"){ 
        noofrows = 6; 
       }else if (type == "cycling_cyclocross"){ 
        noofrows = 6; 
       }else if (type == "running_race"){ 
        noofrows = 6; 
       }else if (type == "rugby_football_hockey"){ 
        noofrows = 6; 
       }else if (type == "music_festival"){ 
        noofrows = 6; 
       }else if (type == "manual_selection"){ 
        noofrows = 5; 
       } 
      } 
     } 
    } 

, но я получаю следующее сообщение об ошибке при попытке выполнить этот код

не удалось построить «Файл»: 1-ый аргумент не является ни массивом, ни это индексировали свойства

Пожалуйста, помогите мне Ресо lve this issue

+1

Она смотрит на меня, как вы хотите, чтобы записать файл на веб-сервере. Это невозможно с помощью javascript, поскольку Javascript запускается только в браузере зрителей и не имеет прямого доступа к файловой системе сервера. – Seb

+1

Если вы хотите использовать класс JavaScript-файла, то вы не используете конструктор правильно (см. [Примечания по реализации на MDN] (https://developer.mozilla.org/en/docs/Web/API/File#Implementation_notes)) , Однако, как отметил @Seb, вы, похоже, пытаетесь сделать что-то, что не поддерживается в браузерах. – UnholySheep

+0

Другими словами, то, что вы пытаетесь сделать, возможно только с помощью кода на стороне сервера/сервера. Javascript - это интерфейс. – Mark

ответ

1

Как указано в сообщении об ошибке, конструктор File ожидает, что массив будет первым параметром. Также вторым параметром должно быть только имя файла и расширение. Вы также можете установить type как действительный тип MIME и lastModified как свойства объекта по третьему параметру для File конструктор.

var txtfile = "test.txt"; 
var file = new File(["hello"], txtfile 
      , {type:"text/plain", lastModified: new Date().getTime()}); 

File.prototype не имеет .open метод. Вы можете использовать File.prototype.slice() для создания нового объекта File и объединить данные с новыми данными ранее созданному объекту File.

file = new File([file.slice(0, file.length), /* add content here */], file.name); 

Сохранение File объекта на сервер требует проводки File объекта на сервер, чтобы прочитать содержимое файла данных.

var request = new XMLHttpRequest(); 
request.open("POST", "/path/to/server"); 
request.send(file); 

где содержимое файла можно прочитать на php с помощью php://input

$input = fopen("php://input", "rb"); 

См Trying to Pass ToDataURL with over 524288 bytes Using Input Type Text

+0

@FaizanZahid Если вы пытаетесь создать, отредактировать, сохранить и файл в локальной файловой системе, см. [Редактировать, сохранять, самомодифицировать HTML-документ; формат сгенерированный HTML, JavaScript] (http://stackoverflow.com/questions/30563157/edit-save-self-modifying-html-document-format-generated-html-javascript) – guest271314