リポジトリにあるテキストファイルを「見る」のリンクで表示されずにダウンロードされる。

582 views
Skip to first unread message

suzuki3desu

unread,
Feb 4, 2009, 9:55:46 AM2/4/09
to Redmine Users (japanese)
テキストファイルの内容が日本語で、SubversionにUPしたら、
属性 svn:mime-type=application/octet-stream が付いてしまい、
そのを削除 した テキストファイルを Redmineのレポジトリで見ようとすると、
ダウンロードされてしまいます。

また、試しに、svn:mime-type を、
text/plain
とか
text/plain;charset=utf-8
とかにしてみましたが、ダウンロードされてしまいました。

svn のURLは、http~なので、svnのURLを普通にブラウザで表示させると、
ちゃんと、テキスト表示され、HTTPのヘッダで
Content-Typeは、text/plain を返してました。

Redmineのレポジトリで、そのファイルを表示させようとすると、どうやら、
HTTPのヘッダのContent-Typeが application/octet-stream になっており
それが原因だと思われるのですが、

svn:mime-type=text/plain
としても、Redmineのレポジトリで表示させようとすると、HTTPヘッダが
Content-Type application/octet-stream
になるのは、どうしてなのでしょう?

どうして、テキストファイルが表示されずに、ダウンロードされるのかしら???

しょぼ~ん;|

fmkt

unread,
Feb 4, 2009, 8:18:05 PM2/4/09
to Redmine Users (japanese)
こんにちは。

おそらく、テキストデータがバイナリとみなされてるからではないでしょうか?

String#is_binary_data?
の中で、「" ".."~"(表示可能な ASCII 文字)もしくは改行コード」以外が 3 割を越えて含まれるようなデータか、
\x00なデータが含まれてるとバイナリとみなされてダウンロードになると思います。

基本的に ASCII以外の日本語(マルチバイト文字) は表示されて欲しいという場合は
\x00 なデータが含まれてる場合のみダウンロードになるようにしてみるといいかもしれません。

過去に作ったパッチなので様子于とかあわないかもしれませんが参考にしてください。

Index: app/controllers/repositories_controller.rb
===================================================================
--- app/controllers/repositories_controller.rb (revision 1709)
+++ app/controllers/repositories_controller.rb (working copy)
@@ -102,7 +102,7 @@

@content = @repository.cat(@path, @rev)
show_error_not_found and return unless @content
- if 'raw' == params[:format] || @content.is_binary_data?
+ if 'raw' == params[:format] || @content.include?("\x00")
# Force the download if it's a binary file
send_data @content, :filename => @path.split('/').last
else

では。

suzuki3

unread,
Feb 4, 2009, 9:17:48 PM2/4/09
to Redmine Users (japanese)
fmkt さん。
ありがとうございました。
助かりました。

ソースの管理だけなら、3割を超えるって事も殆どないですからね~。
日本語のテキスト文章を管理しようとしたら、こうなるんですね。

今社内に、Redmineを導入しようと試みてる最中だったので、
この問題があったままだと、他のメンバーから不満が出てきそうでした。
本当に助かりました。ありがとうございます。


Reply all
Reply to author
Forward
0 new messages