2013-05-04 6 views
5

テーブルからcsvファイルを生成するためにプラグインを使用しています。ファイルは「ダウンロード」ファイル名でダウンロードされています。 dowload.csvJavascript:ダウンロードするファイル名を設定する

var csv = $("#table").table2CSV({delivery:'download'}); 
window.location.href = 'data:text/csv;charset=UTF-8,'+ encodeURIComponent(csv); 

答えて

27

として私はあなたがそれがクライアントのマシン上で可能だと、カスタムファイル名を指定して、ローカルマシンのダウンロードフォルダにファイルを保存するために使用できるツールを書きました。

この記事の執筆時点では、特定の機能にはchrome、firefox、またはIE10が必要ですが、このツールは名前のないダウンロードにフォールバックします。何もないものより優れているため、このツールは利用できます。

あなたの使用のために

と魔法コード:

function download(strData, strFileName, strMimeType) { 
    var D = document, 
     a = D.createElement("a"); 
     strMimeType= strMimeType || "application/octet-stream"; 


    if (navigator.msSaveBlob) { // IE10 
     return navigator.msSaveBlob(new Blob([strData], {type: strMimeType}), strFileName); 
    } /* end if(navigator.msSaveBlob) */ 


    if ('download' in a) { //html5 A[download] 
     a.href = "data:" + strMimeType + "," + encodeURIComponent(strData); 
     a.setAttribute("download", strFileName); 
     a.innerHTML = "downloading..."; 
     D.body.appendChild(a); 
     setTimeout(function() { 
      a.click(); 
      D.body.removeChild(a); 
     }, 66); 
     return true; 
    } /* end if('download' in a) */ 


    //do iframe dataURL download (old ch+FF): 
    var f = D.createElement("iframe"); 
    D.body.appendChild(f); 
    f.src = "data:" + strMimeType + "," + encodeURIComponent(strData); 

    setTimeout(function() { 
     D.body.removeChild(f); 
    }, 333); 
    return true; 
} /* end download() */ 

更新:追加将来性IEルーチン

update2:dataURLおよびBlobサポートを含むチェックアウトthe evolved version on GitHub

+1

見栄えは良いですが、これは2012年前にはどのブラウザもサポートしていません。私は、クライアント側のダウンロードでできることは最高だと思います。 – styfle

+0

実際に、dataURLフォールバックは、かなり古いFirefoxのコピーと、古いクロムでの回避可能なMIMEタイプの問題で機能します。私はIE10と昨年の[ダウンロード]機能を追加する前に、この関数を何年も使っていました... – dandavis

+1

'BlobBuilder'は廃止されました。代わりに 'Blob'コンストラクタを使うように答えを編集してください。 –

関連する問題