0

このトピックで試したすべての Google 検索で、私の問題の逆の結果が得られました。

Web サービスのユーザーがデータをエクスポートできるように、動的にダウンロード可能なテキスト ファイルを作成しています。標準の MVC 動作を使用して、オンザフライでテキスト ファイルを書き込み、コントローラーで次のようにファイルのダウンロードを強制するようにヘッダーを設定しています。

headers["Content-Disposition"] = "attachment; filename=#{filename}.txt"

Windows のエンドユーザーがファイルをダウンロードしてメモ帳で開いているという問題が発生しています。

ビュー ファイルをできる限り多くの異なる方法で再作成し、別のエンコーディングとして保存し、Windows マシンで再作成し、すべての行の末尾に CRLF があることを 3 回確認しました。

cat -v app/views/export/export.text.erbこれを示します:

<%= session.user.username %>'s Data^M
<%= @posts.count %> Posts^M
^M
<% @posts.each do |post| -%>^M
Prompt: <%= post.prompt.title %>^M
Prompt subtitle: <%= post.prompt.subtitle %>^M
^M
Title:    <%= post.title %>^M
Subtitle: <%= post.subtitle %>^M
Created:  <%= post.created_at.to_s %>^M
Updated:  <%= post.updated_at.to_s %>^M
Type:     <%= post.type %>^M
Content:^M
<%= JSON.pretty_generate(post.fields) %>^M
^M
===^M
^M
<% end %>^M

Windows ユーザーに他のテキスト リーダーの使用を要求することはできません。他の誰かが以前にこの問題を解決したはずです。この問題の別の側面: このサーバーに対する sudo 権限がありません。サーバー管理者に何かをインストールするように依頼することもできますが、その前にそれが機能するかどうかを知りたいです。

スタックオーバーフローを助けてください、あなたは私の唯一の希望です!

4

1 に答える 1

0

したがって、私が最終的にたどり着いた解決策はちょっとしたハックであり、より良い提案を歓迎します。

CR が削除されている場所を見つけようとするのではなく、(上記のように) ヘッダー付きのテキスト ファイルを強制的にダウンロードするのをやめ、代わりにブラウザーが通常どおりにテキストをレンダリングできるようにしました。IE およびその他のブラウザーはすべて、干渉を必要とせずに行末をネイティブに処理できます。ユーザーはテキスト ファイルをコピーするか、「名前を付けて保存」すると、メモ帳で正しく表示されます。

完璧ではありませんが、今のところ十分です。

于 2014-05-28T16:42:39.253 に答える