2016-12-13 10 views
1

私はこのコードはJavaScript - 新規ファイル()に動作していない

に実行しようとしたとき、私は次のコード

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; 
       } 
      } 
     } 
    } 

を通じてJavaScriptを使用してファイルにいくつかの文字列を記述しようとしていますが、私は次のエラーを取得しています

は、「ファイル」を構築するために失敗しました:第一引数が配列、また でもない、それは性質

が親切RESO私を助けてインデックスを作成しているんこの問題が発生しました

+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コンストラクタは配列を最初のパラメータとして想定しています。また、2番目のパラメータはファイル名と拡張子のみにする必要があります。有効なMIMEタイプとしてtypeを設定し、Fileコンストラクタの3番目のパラメータでオブジェクトのプロパティとしてlastModifiedを設定することもできます。

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オブジェクトを掲示が必要です。ファイルの内容がphp://input

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

を使用してphpで読み取ることができ

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

あなたがウェブサーバ上のファイルを書きたいようですが、私には見えます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

関連する問題