0

JavaScriptでファイル(ASCIIまたはバイナリ)を変数(var file = "text";)にロードするために使用される手法は何ですか?

4

3 に答える 3

1

新しいHTML5ファイルAPIとXMLHttpRequest2を使用したいとします。

ファイル入力を介して選択されているファイルを聞くか、ブラウザにドラッグアンドドロップすることができます。方法について話しましょうinput[type="file"]

<input type="file">

選択されているファイルを聞いてみましょう。

var input; // let input be our file input
input.onchange = function (e) {
  var files = input.files || [];
  var file = files[0];
  if (file) {
    uploadFile(file);
  }
};

実際のマルチパートファイルアップロードリクエストを作成するために必要なのはFormDataオブジェクトです。このオブジェクトは、HTTPPOSTリクエストの本文を表しています。

var uploadFile = function (file) {
  var data = new FormData();
  data.append('filename', file);

  // create a HTTP POST request      
  var xhr = new XMLHttpRequest();
  xhr.open('POST', './script.php', true);
  xhr.send(data);

  xhr.onloadend = function () {
    // code to be executed when the upload finishes
  };
};

アップロードの進行状況を監視することもできます。

xhr.upload.onprogress = function (e) {
  var percentage = 100 * e.loaded / e.total;
};

説明が必要かどうか尋ねてください。

于 2012-10-24T18:35:38.773 に答える
0

新しいHTML5の方法を使用したい場合は、これが私のやり方です... File()というメソッドを作成しましたが、これは真のHTML5メソッドではなく、ラッパーであることに注意してください...これは変更される可能性があります将来的には注意してください(おそらく名前を変更してください)。

HTML:

  <html>
    <body>
      <input type="file" id="files" name="file"/> 
      <button onclick="load()">Load File</button><br /><br />
      <div id="content"></div>
      <script>
        function load() {
          var fileObj = document.getElementById("files");
          var fp = new File(fileObj);
          fp.read(callback);
        }
        function callback(text) {
          var content = document.getElementById("content");
          content.innerHTML = text;
        }
      </script>
    </body>
  </html>

JavaScript:

function File(name) {
  this.name = document.getElementById(name) ? document.getElementById(name).files : name.files ? name.files : name;
}

// Reads the file from the browser 
File.prototype.read = function(callback) {
  var files = this.name;
  if (!files.length) {
    alert('Please select a file!?');
    return;
  }
  var file = files[0];
  var reader = new FileReader();
  reader.onloadend = function(evt) {
    if (evt.target.readyState == FileReader.DONE) { // DONE == 2
      callback(evt.target.result);
    }
  };
  var data = file.slice(0, file.size);
  reader.readAsBinaryString(data);
} 
于 2012-11-30T04:01:32.300 に答える
-1

JavaScriptをPHPまたはRails(またはサーバー側で使用するもの)内で生成し、ファイルを含めます。

<?php
$my_string = file_get_contents('/path/to/file.txt');
?>

<script>
var my_js_file_string = "<?php echo $my_string; ?>";
...
document.write(my_js_file_string);
</script>
于 2012-10-24T18:20:17.090 に答える