アップロードするファイルを選択し易くしたい

アップロードするファイルを選択し易くしたい

- Tatsuya Shirai の投稿
返信数: 1

 ファイルアップロード時にブラウザで「参照」ボタンを押すとファイル選択用のダイアログが表示されます.IEの場合,”ファイルの種類”は,すべてのファイル(*.*)か,画像(*.gif, *.jpg, *.jpeg, *.png)か,HTML(*.htm, *.html)の3つの選択肢しかありません.これはどうやら,

<input type="file" name="userfile" id="userfile" size="35" />

のデフォルトのようですね.accept=でMIMEタイプをカンマ区切りで入力すれば,ファイルサイズの制限と同様にアップロードを制限できるようですが,望んでいるのはこれとは違います.

 ”ファイルの種類”に,先の3つの選択肢以外に,たとえば”ZIP書庫(*.zip)”や”Office文書(*.xls, *.doc. *.ppt)”や”C言語ソースファイル(*.c, *.h, *.cpp)”のような選択肢を加えることができないのでしょうか.せめて手入力で拡張子を選べると,目的のファイルを探すのがとても楽になります.

 色々と本を当たったり,Webで検索を掛けたりしたのですが,解決法は見つかりません.どうやらセキュリティ上の問題で上記3つに制限している,と匂わせる記述はあったのですが...でもファイルの拡張子を偽装されたりすれば何でもアップロードできますし,そもそも”すべてのファイル(*.*)”がある以上,アップロードできるファイルを制限できているとは思えません.もし,ファイルの種類を制限したいのであれば,accept=(機能しているのかな?)を使うか,アップロードされたサーバサイドでファイルのチェックを行なうべきでしょう.

 何か情報をお持ちの方はいらっしゃらないでしょうか.

Tatsuya Shirai への返信

Re: アップロードするファイルを選択し易くしたい

- Tatsuya Shirai の投稿

 type="file"の初期値を"*.zip"などに変更できれば手入力の手間が少しは省けるかと思って調べてみたのですが,Javascriptなどでもこれは出来ない実装になっているようですね(もし出来たとしてもセキュリティホールとして改善されてしまう?).

 確かにサーバ側からクライアント側のファイル名を指定して先行入力できてしまうと,クライアント側のユーザが選んだつもりの無いファイルをアップロードできてしまって危険ですからねぇ.

 せめて”ファイルの種類”の欄だけでも拡張できると嬉しかったのですが無理そうですので,この話はこれで終わりとします.