M.C.P.C.

―むり・くり―プラスコミュニケーション(更新終了)


| トップページ |

2005年4月27日 12:06

ファイルアップローダで2バイト文字をエスケープするかそのままにするか悩んで困る

このエントリーをはてなブックマークに追加 mixiチェック

どっかの掲示板で見た話題に触発されて、自分の会社 or プロバイダの e-mail のメールボックスの容量が なんMB なのか知らずに何でも「e-mail で送信してください」とおっしゃられるもう少しなんとかなって欲しいクライアントに http でファイルを送信するシステムを作っていますが、要望は、ファイル名をなるべく壊さないようにして欲しい、ていうもの。

なるべく壊さないって、あんた……

IE と Firefox の URL エンコーディングの仕組みが違うので、まいっちんぐ。

Windows XP において、ブラウザデフォルトでは、

IE 6
UTF-8 を URL エンコーディング
Firefox 1.03
Shift-JIS を URL エンコーディング

こんな調子じゃ、この世に存在するブラウザ毎調べなきゃいけないのでやりたくないです。

同じファイルを UTF-8、EUC-JP、SJIS の3種用意しておけばなんとかなりそうな気もしますけれども、なんだかアホらしいので、mod_rewrite で 他のエンコーディングのリクエストが来ても UTF-8 に統一とかしてしまうとステキそげですができるかどうかはしらんです。

投稿 大野 義貴 [パソコン・インターネット] | |

トラックバック(0)

トラックバックURL: http://blog.dtpwiki.jp/MTOS/mt-tb.cgi/1052

コメント(4)

PATH_INFOにファイル名を渡すような使い方に?

PATH_INFOにファイル名を渡すような使い方に?

そう思ったんですけれども、よく分かっていなかったりします。

MacIE5 が、SJIS の URL エンコーディングで取りに来て、文字化けした状態で保存しちゃったので、やめることにしました。

普通にsha1とかでファイル名を生成したりとか。
ファイル名はtextareaフォームで受けてJcode通しちゃうとか?

普通にsha1とかでファイル名を生成したりとか。 ファイル名はtextareaフォームで受けてJcode通しちゃうとか?

PukiWiki みたいな形になるでしょうか。

生ファイル名:文書2-after.pdf 
格納ファイル名:attach/3A7465737433_CAB8BDF1322D61667465722E706466 
生成されるURL:
http://example.org/pukiwiki.php?plugin=attach&pcmd=open&file=%CA%B8%BD%F12-after.pdf&refer=%3Atest3

半クローズドな環境で究極の簡単ユーザインタフェースを目指すためには、

upload する人:生データの名前を変更せずに cgi フォームで Web共有スペースに上げる
 ↓
(cgi は所定の場所に up、相手先に e-mail でダウンロード場所表示、URLは2バイト文字混じり)
 ↓
download する人:e-mail で アドレスをクリックして WWW ブラウザでダウンロード

つうかたちを。download する人は代理店とかなので、ファイル名を変更するとかしないから(e-mail で添付できる範囲の画像データであれば広告代理店の方は転送で処理されますので)、ファイル名に2バイト文字使っている場合、どうやってダウンロードさせればいいか、と思ったとき、「生データの2バイト文字のママ置いておいたら WWW ブラウザ側でどうなるか?」と思い、SJISとUTF-8で名付けたファイルを置いておき Macintosh のブラウザで PULL っつたら、それぞれのブラウザで2バイト文字のエンコーディングが違うものの引っ張ってこれたので使えるかな?なんて思ったのがこのエントリの発端です。

ダウンロード側に e-mail で通知する URL に、あいだに CGI を挟めた記述にすれば、CGI 側で http ヘッダの中の Content-disposition でダウンロードされるべきファイル名に設定されるようにすることで目的に近づけそうですね。

コメントする