こんにちは
<input type="file">について、以下の点お教えください。
ソースで<input type="file" name="test" maxlength="10">
とした場合に、コピー&ペーストでは、例えば20byte文字列を貼り付けると10byteまでしかボックスには反映されないのですが、
その後直接手入力ができます。
また、ボタンからダイアログを起動してパスを指定した場合も、maxlength以上の桁数がセットされます。
ソースの書き方が悪いのでしょうか?
それとも手入力文字数やダイアログからの桁数の制限をかけられないという仕様(HTML?IE?)なのでしょうか?
また、ダイアログからパスを指定した場合、このパスが255byte以上(254byteはOK)だと、
パス内容がボックスに反映されないのですが、
これもまた仕様なのでしょうか?
(ファイル名の最長桁数が256byteだと思うと問題があるような気がするのですけども)
※私のマシンはWinXPでIE6のSP2を使用しています。
以上の点について、何か情報をお持ちの方は回答お願いします!!
No.4ベストアンサー
- 回答日時:
> (ファイル名の最長桁数が256byteだと思うと問題があるような気がするのですけども)
問題ありません。
何も送信しないだけです。
存在しないファイル名を指定しても何も送信されません。
MacOS Xでは500バイト以上のパスにすることが出来ます。
> あと、あまりにも長い文字を入れていくと、コピペをした際に値が表示されなくなったり、
> でもカーソルを移動させると突如文字が見えるようになったり、
> あまり見栄えのよろしくないことも発生します。
ブラウザ依存です。
特にMacでは、「ファイルを送信する(個人情報やセキュリティーに関係する)」ということを明確にするために、
CSSやタグ属性で見た目を変更したり隠したりすることに制限があります。
> 手入力だと入ってしまうので同期をとってほしいということでの対応なのです。
お客様理論への対応オツカレサマです(^^;
ファイルフィールドは、javascriptから操作することは出来ません。
なので、onsubmitで<input>のvalueを取って、
一定の文字数(バイト数)以上だったらalert()とreturn falseするくらいだと思います。
WindowsIEのみかもしれませんが、
http://www.microsoft.com/japan/msdn/columns/webt …
ファイルフィールドをdisplay:noneで隠しておいて、
かわりにテキストフィールドとボタンでエミュレートする方法です。
テキストフィールドなら、スタイルシートやJavaScriptで操作出来ると思います。
該当のページでも解説がありますが、正確なファイル名を手入力してもファイルを送信出来ません。
ですからdisabledを指定して、手入力出来なくしています
参考URL:http://www.microsoft.com/japan/msdn/columns/webt …
色々試していただけて感謝です。
ブラウザ依存ならブラウザ依存だと分かっただけでも、
対応無理です!と話ができるので大変助かりました。
今回とった対応とは異なりますが、
disabledを指定して手入力をなくすというのもよい手段ですね。
今後の参考にもなりました(^-^)
ありがとうございました!
No.5
- 回答日時:
> また、ダイアログからパスを指定した場合、このパスが255byte以上(254byteはOK)だと、
> パス内容がボックスに反映されないのですが、
XP+IE7で確認しました。
Fxでは少なくとも265バイトまで可能ですのでOSのバグではなさそうですし、
仕様とは思えないので、ブラウザ(IE)のバグのようですね。
MacOS X + Fxは500バイト以上可能です。
この回答への補足
皆様アドバイス等ありがとうございました。
他の方が同様の問題を抱えたときのために、
念のため私の方でとった対応を書くと、
OnBlur(※フォーカス喪失時に発生)を<input type="file">に入れて、
フォーカスが外れた場合に254byte以上の入力があった際は、
アラートを出して、フォーカスをセットしなおすことにしました。
<input type="file">はボックスと参照ボタンとで成り立っているオブジェクトなので、
OnBlurイベントはtabキーでボックスから参照ボタンにフォーカスを移動させたときに起きないのが難点といえば難点なのですが、
OKが出たのでそういう形にした次第です。
No.3
- 回答日時:
通常の文字列であれば無限に長いものをサーバーへ渡さないために制限をかけることがありますけど、
ファイルパスの場合受け取るのはパスで指定されたデータそのものなので文字数を規制する意味はありません。
むしろ規制するならば選択するファイルの容量をどうにかしたほうが宜しいのでは?^^;
この回答への補足
ダイアログから指定した場合は255バイト以上の長さになるパスは指定できないのに、
手入力だと入ってしまうので同期をとってほしいということでの対応なのです。
あと、あまりにも長い文字を入れていくと、コピペをした際に値が表示されなくなったり、
でもカーソルを移動させると突如文字が見えるようになったり、
あまり見栄えのよろしくないことも発生します。
そういうときにポストされたらどうなっちゃうのか、という問題もあるのです。
(そんな長い文字列をわざわざ入れる人もそうそういないとは思いますけどね ^_^;)
ファイルサイズに関しては既に対応済みなので、
お気遣いありがとうございます(^-^)
No.2
- 回答日時:
W3Cでは text 及び password に使用する属性としてmaxlengthが挙げられています
http://www.asahi-net.or.jp/~sd5a-ucd/rec-html401 …
> HMTL関連のHPを見ると、maxlengthが指定できることになっているのです。
昔のブラウザではtype="file"であっても maxlength を指定した場合、
入力による文字数制限をかけることが可能でした
(参照による場合は表示されてしまいますが、それ以上の直接入力は不可)
現在指定が出来ないのは、ブラウザのバージョンアップに伴い
W3C標準にするための改善と考えられます
この回答への補足
アドバイスありがとうございます。
URL、参考にさせていただきました。
昔のブラウザだったら有効だったんですね。
参照のダイアログから表示させたときって、
そのパス長に制限とかありましたか?
ご存知であれば教えていただきたく思いますm(_ _)m
No.1
- 回答日時:
fileの文字数をHTML側で制限する筋合いはないので、maxlengthなんて
指定できないのでは?そうなるとブラウザに依存するものだと推定できます。
この回答への補足
HMTL関連のHPを見ると、maxlengthが指定できることになっているのです。
(http://www.tohoho-web.com/html/input.htm)
なので、それが有効にならないのは何故だろう?というわけでして。
アドバイスありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
HTMLからフォルダを開きたい
-
htmlの中にexcelが埋め込むには...
-
HTMLで別PCのフォルダを開く
-
iPadの標準ブラウザでローカルH...
-
メールに添付されたhtmlファイ...
-
htmlの謎
-
テクトロ オシロ 拡張子 ISFフ...
-
C# ローカルにあるhtmlの相対...
-
エクセルVBA 文字化けします。
-
htmlにtextファイルを表示させ...
-
input type="file"のmaxlength...
-
インクルードはPHP?SSI?
-
コマンドプロンプトでパラメー...
-
社内で利用するWebサイトを立ち...
-
Excelで、社外秘(閲覧のみ)と...
-
java_run.batがダウンロードで...
-
どのページもすべて同じURLなの...
-
googleドライブで、PDFファイル...
-
一つのリンクに複数のURLを指定
-
リンク先からリンク元の、同じ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
HTMLからフォルダを開きたい
-
iPadの標準ブラウザでローカルH...
-
htmlの中にexcelが埋め込むには...
-
社内で利用するWebサイトを立ち...
-
HTMLで別PCのフォルダを開く
-
<a href=…></a>で表示されない。
-
htmlの謎
-
、URL化させるにはどうしたらい...
-
htmlにtextファイルを表示させ...
-
JSPの中にhtmlファイルを埋め込...
-
メールに添付されたhtmlファイ...
-
フォルダ内の画像を一括でhtml...
-
コマンドプロンプトでパラメー...
-
input type="file"のmaxlength...
-
編集HTMLファイルを別のフォル...
-
html からリンクされていないフ...
-
C# ローカルにあるhtmlの相対...
-
HTMLファイルに変な文字が勝手...
-
テンプレートファイルでCSS...
-
vbでhtmlファイルを作成するに...
おすすめ情報