• ベストアンサー

htmlのfileタグに自動で値を入れる方法

htmlのタグでいって <input type="file">を用いてファイルをサーバーにアップロードしたいと思っています。で、このとき、ファイル名は任意に選べるのではなく固定で送信したいと思っています。 すなわち、HTMLを読み込んだ時点で、fileのテキストボックスにファイルパスが埋め込まれているか、JavaScriptで、ファイルパスを自動入力するようにしたいと思っています。 最終的には、form内のオブジェクトをすべて非表示にし、onload時にsubmitするような形にしたいと思っています。いろいろ事情があって苦肉の策になっています…。 とりあえず(だめだとは思っていたのですが) <input type="file" value="ファイルパス" name="filepath"> と直書きにしてみたり document.all.filepath.value = "ファイルパス"; などとしてみたりしましたがだめでした…。 W3C勧告の使用上はvalueでファイルパスを指定できるようになっているようなのですが、現在の一般的なブラウザでは禁止されているようですね。 このような場合、何らかの方法でfileにファイルパスを自動入力することはできますでしょうか? もしできない場合、何らかの方法で実現する方法はありますでしょうか?よろしくお願いします。 ちなみに実現できればいい環境は WinXP環境のIE6です。言語はクライアント言語はJavaScriptのみで、という条件付です。 できないかもしれないのですが、こういうのって必要になるときもあるよなーなどと思っており、もしかしたら解決方法があるかもしれないと思い質問しました。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • steel_gray
  • ベストアンサー率66% (1052/1578)
回答No.5

やっぱ無理じゃないでしょうか。 なにか裏ワザ的な方法で一時的にできたとしても、いつか直されるかもしれないのでおいそれとは使えないし。 >W3C勧告の使用上はvalueでファイルパスを指定できるようになっている →参考URL 「ユーザが明示的に送信を求めたファイル以外のものは送ってはいけない」とあります。

参考URL:
http://www.asahi-net.or.jp/~sd5a-ucd/rec-html401j/appendix/notes.html#forms-security
arakororin
質問者

お礼

>→参考URL 「ユーザが明示的に送信を求めたファイル以外のものは送ってはいけない」とあります。 うわ。なんか勘違いしてたみたいです。有用な情報ありがとうございます。

その他の回答 (6)

  • bobviv
  • ベストアンサー率50% (13/26)
回答No.7

 すでにご指摘のとおり、セキュリティ上の理由からfileフォームにはスクリプトで値を設定できないようになっているようです。詳細は知りませんが、セキュリティ上の理由からそうなっているということは、おそらく『回避手段など存在しない』と考えたほうがいいと思います。  つまり、ふつうはあきらめるべきだということです。時間の無駄です。あなたがクラッカーなら別ですが^^。 

arakororin
質問者

お礼

ありがとうございます。

  • kosa
  • ベストアンサー率25% (379/1464)
回答No.6

もしかして方向性が違った回答になるかもしれまんせが、間違っていれば気にしないで下さい。 ファイル名を固定にする理由がよくわかりませんが、凄く面倒なことをしていることからソースを見られるとまずいということですよね? そういうことならば、FALSHでフォームを作成してあげればソースを見られることなく、もっとシンプルに作る事ができると思うのですが・・・

arakororin
質問者

お礼

ありがとうございます。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.4

ちょっと前まで通常formのsubmitもセキュリティ上の 理由からスクリプトから実行できなかった 記憶があります。 便利とセキュリティは表裏一体ですからねぇ。 もし可能であれば、PC上のすきなファイルをがんがん 抜いたり、でかいファイルを攻撃先におくりつけたり いろいろできてしまうでしょう。

arakororin
質問者

お礼

ありがとうございます。 >ちょっと前まで…submitも…できなかった そうなんですか。それは面白い情報ですね。 そうなんですよ。それで困っているのです。 無理でしょうかね。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

<input type="file"> は、セキュリティ上の理由から(そのページにアクセスした時に、自動的に指定されたファイルが抜かれてしまうことになる)スクリプトから値の設定はできません。

arakororin
質問者

お礼

ありがとうございます。そうなんですよね。 で、なんとかならないものかと思っているのです。 追加しますと、固定ファイルとは自由に書式を変更できるので、もうほんとに最悪の場合、base64エンコーディングしてjsファイルの変数の文字列としてでも持たせて、それを読み込んでform中の要素に設定し送信とか、そんなものすごい方法を考えているのですが、すこしやりすぎなのでもう少しまともな方法はないかと思っているしだいであります…。

noname#210211
noname#210211
回答No.2

勘違いしておりましたね、やはり。では後は識者に任せます。 不愉快な思いをされたようで失礼しました・・・お許しを。

noname#210211
noname#210211
回答No.1

JavaScriptはクライアント側、ブラウザを動かすものであってサーバを動かすわけじゃありません。そうなると違う言語(Perlなど)を利用するしかないと思われます。

arakororin
質問者

補足

サーバーの構成は書く必要はないと思ったのですが、誤解される方がおられるようなので書いておきます。サーバーサイド言語はJavaでサーブレットでの稼動になります。 そのサーブレットにhtmlから情報をpost送信するときの話です。そのときの情報の中に、あらかじめ定められたファイルを含めたいということです。