ファイルのアップロード 14.54版以降
いろいろな方法で、ZIP/MP3ファイルをアップロードしてみます。
・ウェブページからアップロード
ここでは、無料のウィルスチェックサイト「VirusTotal」を利用させていただき、ファイルをアップロードします。
下記がそのページ。
ファイル入力フィールドにファイルパスを入力できれば簡単なのですが、セキュリティの関係で、「file」属性のフィールドは読み取り専用、かつ、プログラムでも入力できないようになっています。
よって、人が操作するのと同じ手順をプログラムで行うことにします。
プログラム26行目までは、ファイルのダウンロード処理
マウスレコーダーのダウンロードページからアーカイブファイル「mrecorder.zip」をダウンロードします。
このファイルを「VirusTotal」ページにアップロードします。
ウェブページからのダウンロードについては、下記のページを参考にしてください。
ダウンロードファイルをウェブページから検索
1.フィールドにフォーカス
IEFocusコマンドでファイルパス入力フィールドにフォーカスを当てます。
(=アクティブにする)
2.タブを押す
一回タブを押すと「ファイル選択」ボタンにフォーカスが移ります。
ボタン押下
ENTERキーを押すと、「アップロードするファイルの選択」ダイアログボックスが開きます。
3.ファイルパスを入力
絶対パスでファイルパスを入力します。
4.「開く」ボタンに移動
ショートカットキー(ALT+O)で「開く」ボタンにフォーカスを移動します。
ENTERキーを押下
5.「スキャンする」ボタンを押下
「スキャンする」ボタンに自動的にフォーカスが移るので、そのままENTERキーを押すだけで良いのですが、ここでは、IDから検索し、ポイント後にENTERキーを押しています。
(自動的にフォーカスが移らないページがある場合の対応)
以上でファイルのアップロードが開始されます。
その後の流れは、右図。
既にチェック済みなので、右図のようなメッセージが表示されます。
001 INIT 8 390 598 734 0,0,1,600000,0,MyData 002 ! ダウンロード&アップロード 003 ! 004 ! マウスレコーダーのアーカイブファイルをダウンロードして 005 ! ウィルスチェックを行います 006 ! 007 ! チェックサイトは、VirusTotal 008 ! 009 ! 変数定義と初期値 010 ! 011 Set // ダウンロード先URL Down_Url ../../../../../web_dl/petit_tool/mrecorder/frame/default.html 012 Set // ダウンロードファイル名 FileName mrecorder.zip 013 Set // 保存先ファイルパス Down_File %Desktop%\%FileName% 014 ! 015 Set // アップロード先URL Up_Url https://www.virustotal.com/ja/ 016 Set // ファイルパス入力フィールド Up_ID file-choosen 017 ! 018 ! ダウンロード 019 ! 020 IENavigate // マウスレコーダーのページを開く 0 0 900 700 %Down_Url% 021 IEPoint // 「ダウンロード」をポイント ダウンロード 表示文字 022 IEDownload // ダウンロード %Down_File% 023 MSG_BOX // ウィルスチェック開始確認 4 ダウンロード完了 保存先: %Down_File% 続けて VirusTotal にてウィルスチェックを行いますか? 024 If // いいえ %MsgBox% = 7 025 QUIT // 終了 026 End-If 027 ! 028 ! アップロード 029 ! 030 IENavigate // アップロード先ページを開く 0 0 900 700 %Up_Url% 031 IEFocus // ファイル入力フィールドにフォーカス %Up_ID% Id(name) 032 Tab // ファイル選択 033 Space // ボタンを押す 034 Wait // ダイアログが開き切るまで待つ 1000 035 文章入力 // ファイルパス入力 一括 %Down_File% 036 Wait // 入力処理完了待ち 500 037 Alt+O // 「開く」 038 IEFocus // 「スキャンする」 500 btn-scan-file Id(name) 039 Enter // ENTER
034,36行目で時間待ちをしています。 これは、ダイアログが完全に開き切るのと、入力処理が完了するのを待つためです。
あまり感心できる処理ではありませんが、処理が空振りする場合は、待ちを少し長く(1秒=1000ほど)してみて下さい。
コードの使用方法