
こんにちは
<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で質問しましょう!
似たような質問が見つかりました
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- その他(データベース) c言語の問題です。これを踏まえてコーディングしたいのでおしえていただきたいです。 3 2023/08/03 09:27
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- HTML・CSS ただいま勉強始めたての初心者です。フォームを縦並べにしたいです。 2 2022/11/20 17:18
- JavaScript アップロードファイルの種類によって処理を分岐させたいのですが書き方が分からずアドバイスお願いします 4 2023/06/17 19:12
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
HTMLからフォルダを開きたい
-
iPadの標準ブラウザでローカルH...
-
社内で利用するWebサイトを立ち...
-
htmlの中にexcelが埋め込むには...
-
HTMLで別PCのフォルダを開く
-
VB6でHTMLファイルを起動するに...
-
htmlの謎
-
<a href=…></a>で表示されない。
-
テンプレートファイルでCSS...
-
HP作成についてなんですが・・・。
-
メールに添付されたhtmlファイ...
-
div idにテキストファイルを指定
-
Netscapaでのhtmlファイル表示...
-
htmlにtextファイルを表示させ...
-
yomi-searchテンプレートファイ...
-
Word文書の.docファイルをWeb上...
-
vbでhtmlファイルを作成するに...
-
HTMLファイルの開くアプリを指...
-
html からリンクされていないフ...
-
HTMLファイルに変な文字が勝手...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
HTMLからフォルダを開きたい
-
iPadの標準ブラウザでローカルH...
-
社内で利用するWebサイトを立ち...
-
htmlの中にexcelが埋め込むには...
-
メールに添付されたhtmlファイ...
-
HTMLで別PCのフォルダを開く
-
htmlにtextファイルを表示させ...
-
、URL化させるにはどうしたらい...
-
input type="file"のmaxlength...
-
htmlの謎
-
JSPの中にhtmlファイルを埋め込...
-
MIMEタイプってなぜあるんですか?
-
vbでhtmlファイルを作成するに...
-
<a href=…></a>で表示されない。
-
スマホサイト url SP
-
Word文書の.docファイルをWeb上...
-
お気に入りのエクスポートした ...
-
HTMLの<a href="xxx.html">~</...
-
コマンドプロンプトでパラメー...
-
テクトロ オシロ 拡張子 ISFフ...
おすすめ情報