13032


ウェブブラウザを開き、ローカルファイルを設定参照できるinput-type="file"に自動で設定させるやり方がわかりません。  
通常どおりにやると、できないのでThread操作が必要ですが、難しいので既存のクラスを使っています。  
<http://www.codeproject.com/Articles/28917/Setting-a-file-to-upload-inside-
the-WebBrowser-com>  
が、クリックしても参照設定されません。

[code]

        private void button1_Click(object sender, EventArgs e)
        {
            HtmlElement form = webBrowser1.Document.Forms[0];
            form.AttachEventHandler("onsubmit", delegate (object o, EventArgs arg)
            {
                FormToMultipartPostData postData =
                    new FormToMultipartPostData(webBrowser1, form);
                postData.SetFile("file", @"C:\Users\Shimizu\Videos\FD\a.mp4");
                postData.Submit();
            });
        }
    
[/code]


CC BY-SA 3.0
2015-08-04T06:08:35.957
13017
2015-08-04T12:15:56.197
2015-08-04T11:52:36.793
8000
7973
question
c#
WebBrowserコントロール内の<input type="file">をC#から設定したい


スクリプト等で `input[type=file]`
にローカルファイルを設定することはできません。でなければ、個人情報等を含んだファイルをユーザーの確認なしにアップロードできてしまいますよね？

また、 WebBrowser クラスを通してアクセスできる HtmlElement 等は Javascript からアクセスできる DOM
オブジェクトそのものです。故に、 Javascript と同程度の操作しか行えません。

質問に挙げられたサイトでも、プログラムから変更することはできないと書かれています。

> As you probably know, for security reasons, it is not possible to change the
> value of the HTML form file input programmatically.

その上で、 **`input[type=file]`
を設定するのは諦めて**、そうすることなしに任意のファイルをアップロードするのが、あなたの引用されたサンプルコードです。

しいて言えば、参照ダイアログを表示させて、そのダイアログをプログラムから制御することはできるかもしれません。（私は試していません）

参考 [IE8でのINPUT
TYPE="FILE"フィールドに値をセットする](https://social.technet.microsoft.com/Forums/en-
US/885f7e56-1198-483e-8a89-b1e01f43f590/ie8input-
typefile?forum=internetexplorerja)


CC BY-SA 3.0
2015-08-04T12:15:56.197
13032
2015-08-04T12:15:56.197
8000
13017
answer