ファイルアップローダで2バイト文字をエスケープするかそのままにするか悩んで困る
スポンサードリンク
どっかの掲示板で見た話題に触発されて、自分の会社 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
PATH_INFOにファイル名を渡すような使い方に?
そう思ったんですけれども、よく分かっていなかったりします。
MacIE5 が、SJIS の URL エンコーディングで取りに来て、文字化けした状態で保存しちゃったので、やめることにしました。
普通にsha1とかでファイル名を生成したりとか。
ファイル名はtextareaフォームで受けてJcode通しちゃうとか?
PukiWiki みたいな形になるでしょうか。
半クローズドな環境で究極の簡単ユーザインタフェースを目指すためには、
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 でダウンロードされるべきファイル名に設定されるようにすることで目的に近づけそうですね。