@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

INPUT FILEエレメントは操作不可能?

投稿者投稿内容
YAMANEKO
会議室デビュー日: 2008/06/06
投稿数: 19
投稿日時: 2009-01-30 11:02
毎日定時にブラウザから報告書のファイルをアップロードしていた作業を、
自動化したいという案件で、困っているのですが・・・

HTMLの<INPUT TYPE=FILE>エレメントに値を入れる事ってできないのでしょうか?

.NETのクラスを使ってアクセスを試みても
webBrowser1.Document.GetElementById( "file1" ).InnerText = "report.csv";

DOMを使ってみても
( (mshtml.HTMLInputTextElement)webBrowser1.Document.GetElementById( "file1" ).DomElement ).value = "report.csv";

全く反応なしです。
<INPUT TYPE=TEXT>エレメントなら、これで値をセットできるのですが・・・

ブラウザから勝手にローカルファイルをアップロードされるのは危険なので、
セキュリティ上仕方ないこととは思いますが・・・
セキュリティの設定で回避できたりしないのでしょうか。。?
YAMANEKO
会議室デビュー日: 2008/06/06
投稿数: 19
投稿日時: 2009-01-30 11:10
失礼しました。書き間違いです。

>> ( (mshtml.HTMLInputTextElement)webBrowser1.Document.GetElementById( "file1" ).DomElement ).value = "report.csv";

( (mshtml.HTMLInputFileElement)・・以下略

の間違いでした。m(__)m
プログラムの方は、HTMLInputFileElementで試してますが。。
あすか
ぬし
会議室デビュー日: 2006/07/12
投稿数: 309
投稿日時: 2009-01-30 11:31
できません。

どのような目的で行いたいのかを仰っていただければ
いろいろな回避方法はあると思われます。
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2009-01-30 12:07
引用:

YAMANEKOさんの書き込み (2009-01-30 11:02) より:
ブラウザから勝手にローカルファイルをアップロードされるのは危険なので、
セキュリティ上仕方ないこととは思いますが・・・
セキュリティの設定で回避できたりしないのでしょうか。。?


私も、設定でできるようになってても良いと思います。ブラウザー単体で使う場合が無理でも、プログラムから WebBrowser を制御するときぐらい許してくれても良さそうなものですが。
しかし、どちらの場合についても、いまだにそういう設定方法があるとは聞いたことがありませんので、たぶんできないのだと思います。(できないことを証明はできませんが。)

ちなみに、ご存知かもしれませんが、過去に関連する話題としては、つぎのものがありました。

件名:「Webbrowserコントロール type=file のテキストボックス部分に文字を入力する方法」
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?mode=viewtopic&topic=32163&forum=7
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2009-01-30 12:13
引用:

YAMANEKOさんの書き込み (2009-01-30 11:02) より:
毎日定時にブラウザから報告書のファイルをアップロードしていた作業を、
自動化したいという案件で、困っているのですが・・・


プログラムによる完全自動化ではなく、手作業の補助的な半自動化ならば、マウスやキーボードの動きを再現するようなツール(ロボット系?)を使うという手もあるのかもしれません。私は良くは知りませんが、フリーウェアを探すといろいろあると思います。

完全自動化に近づけるならば、WebBrowser ではなく WebRequest/WebClient を使って、HTTP のファイルアップロードを処理するのが確実なのかもしれません。もしも目的とするサイトがセッション(ログイン)などを要求していると面倒かもしれませんが。
todo
ぬし
会議室デビュー日: 2003/07/23
投稿数: 682
投稿日時: 2009-01-30 12:18
引用:

YAMANEKOさんの書き込み (2009-01-30 11:02) より:
毎日定時にブラウザから報告書のファイルをアップロードしていた作業を、
自動化したいという案件で、困っているのですが・・・



http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=47184&forum=7
冬寂
ぬし
会議室デビュー日: 2002/09/17
投稿数: 449
投稿日時: 2009-01-30 13:04
引用:

YAMANEKOさんの書き込み (2009-01-30 11:02) より:
毎日定時にブラウザから報告書のファイルをアップロードしていた作業を、
自動化したいという案件で、困っているのですが・・・


使ったことは無いけど、curlでも使ってみるといいのでは?
(同じ名前の別モノがあるので紛らわしいけど、libcurlで検索すると当たるのかな?)

# っつか、HTTPをよく勉強してみるべきなのではないかと。
YAMANEKO
会議室デビュー日: 2008/06/06
投稿数: 19
投稿日時: 2009-01-30 15:37
皆様、ありがとうございます。

TCPクライアントは何度も書いたことあるので、最初は、HTTPリクエストを自分で、と考えたのですが・・・・
このページが、フォームにJavaScriptが付いていていろいろ処理をしたり、URLが動的に変わったり等々、一筋縄にリクエストを送ることができないので、WebBrowserを使ってなんとかできないかと思った次第でして。

でもやはり、自分でリクエストを送りつける方法を考えた方が良さそうですね。

スキルアップ/キャリアアップ(JOB@IT)