3

既存のデータをcsvファイルにエクスポートしたい。私はこのコードを使用しようとします:

var uriContent = "data:text/csv;charset=utf-8," + encodeURIComponent(data);
var myWindow = window.open(uriContent);
myWindow.focus();

それは機能しますが、ファイル名を設計できます。名前の由来がわからない「MVeAnkW8.csv.part」のような名前のダイアログしか取得できません。

最初のダイアログでファイル名を割り当てるにはどうすればよいですか? 前もって感謝します。

アップデート:

今はレールを使っています。実際には、サーバー側の名前 export_to_csv にメソッドがあります。このメソッドの最後に、次のようなコードを使用します。

  send_data(csv_string,
  :type => 'text/csv; charset=utf-8;',
  :filename => "myfile.csv")

それは機能し、ファイル名を指定できます。今のところ、ajax を使用してより多くの csv ファイルを取得したいと考えています (通常の http 要求ではダウンロードするファイルを 1 つしか取得できないため、javascript を使用したいのはそのためです)。

私はそのようなjsコ​​ードを使用します:

$.post("export_to_csv",
 function(data) {
 var uriContent = "data:text/csv;charset=utf-8," + encodeURIComponent(data);
     var myWindow = window.open(uriContent);
     myWindow.focus();});     

サーバー側からデータを取得し、それをcsvに転送しようとします。ファイルを取得できますが、ファイル名を指定できません。

4

1 に答える 1

4

私が知っているように、ファイル名を指定できるのはchrome 14以降のみです。この質問を見てください:データを使用するときに提案されたファイル名を指定する方法はありますか: URI?

アップデート!

複数の csv ファイルを「一度に」ダウンロードする場合は、それらをまとめて圧縮するか、各ファイルをサーバーに個別に保存します (各ファイルには、それを指す URL があります - 「www」フォルダー内に配置した場合) . 次に、ファイル名とそのパス/URL を ajax 経由でクライアントに送信します (たとえば、json でエンコードされたリストを使用します)。ajax コールバック関数: ファイルのリストを取得し、各ファイル URL を個別のポップアップで開きます。

于 2012-11-15T20:55:14.823 に答える