2015-05-10 49 views
0

我正在使用Highcharts製作一個本地html5統計頁面,我想從我自己的筆記本電腦中分配的csv文件中獲取我的圖表的數據。 javascript代碼是:如何將數據保存爲javascript中的csv文件中的字符串?

var arch = new FileReader(); 
var content = arch.readAsArrayBuffer('./csvs/sample1.csv'); 
//var content = arch.readAsText('./csvs/sample1.csv'.files); 
var sample = $.csv.toArrays(content); 
console.log(sample1); 
$(function() { 
    $('#container').highcharts({ 
     xAxis: { 
      min: -0.5, 
      max: 5.5 
     }, 
     yAxis: { 
      min: 0 
     }, 
     title: { 
      text: 'Scatter plot with regression line' 
     }, 
     series: [{ 
      type: 'line', 
      name: 'Regression Line', 
      data: [[0, 1.11], [5, 4.51]], 
      marker: { 
       enabled: true 
      }, 
      states: { 
       hover: { 
        lineWidth: 0 
       } 
      }, 
      enableMouseTracking: false 
     }, { 
      type: 'scatter', 
      name: 'Observations', 
      data: sample, 
      marker: { 
       radius: 4 
      } 
     }] 
    }); 
}); 

我也使用jquery-csv插件,但它不起作用。我已經用fopen測試過,但沒有。控制檯告訴我:

Uncaught TypeError:無法在'FileReader'上執行'readAsArrayBuffer':參數1不是'Blob'類型。

謝謝。

+2

好了,什麼都不用你瞭解了該錯誤信息?它期望一個Blob(文件內容),而不是一個字符串。 – Sumurai8

+0

對不起,但Blob是一個不完整的單詞(術語),我是西班牙語 – Tobal

+0

Blob它是二進制大型對象。 – jcubic

回答

1

讀取本地文件,你需要輸入的文件類型:

function readSingleFile(evt) { 
 
    //Retrieve the first (and only!) File from the FileList object 
 
    var f = evt.target.files[0]; 
 

 
    if (f) { 
 
     var r = new FileReader(); 
 
     r.onload = function(e) { 
 
     var contents = e.target.result; 
 
     document.getElementById('output').innerHTML = contents; 
 
     } 
 
     r.readAsText(f); 
 
    } else { 
 
     alert("Failed to load file"); 
 
    } 
 
    } 
 

 
    document.getElementById('fileinput').addEventListener('change', readSingleFile, false);
<input type="file" id="fileinput"/> 
 
<textarea id="output" cols="60" rows="10"></textarea>

0

您需要將文件讀入對象,然後將該對象傳遞給FileReader.readAsXXX方法。

FileReader.readAsArrayBuffer()不帶字符串。

Here是一些可幫助您的API文檔。

0

FileReader.readAsArrayBuffer(..)預計的Blob作爲參數,而不是字符串。 blob是從文件讀取的二進制數據。您可以在mdn上找到有關FileReader的文檔。

它告訴我們,我們也可以通過Filedocs),我們可以從FileListdocs)中提取。

您無法直接從您的計算機讀取文件。這將是一個重大的安全漏洞。我們需要做的是在輸入元素中選擇文件,或者將文件拖放到其中。然後,我們讀取文件並執行代碼:

<input type="file" id="myfile"> <input type="button" id="csvbutton" value="Load"> 

和Javascript:

$("#csvbutton").on("click", function() { 
    var file = $("#myfile")[0].files[0]; 
    if(file == undefined) { 
    //RIP 
    return; 
    } 
    var arch = new FileReader(); 
    var content = arch.readAsArrayBuffer(file); 
    //etc 
}); 
相關問題