PHP 側も単純ですが、PHP のマニュアルに書いている場所は、少し見付けづらいかもしれません。 内容は PUT メソッドで始まっていますが、VBScript からは POST で問題ありません。実際の内容は、Apache 上で PUT メソッドを PHP でサポートするお話なので、重要なのは PHP での記述方法です。 put.php ( utf-8n )
<?PHP header( "Content-Type: text/html; charset=utf-8" ); $id = uniqid(); $fp = fopen( "php://input", "rb" ); $wfp = fopen( "data/{$id}_upload.dat", "wb" ); while( $ret = fread( $fp, 4096 ) ) { fwrite( $wfp, $ret ); } fclose($wfp); fclose($fp); ?> データが保存されました
この URL に対して、VBScript のコマンドは POST であろうが、PUT であろうがどちらでもかまいません。 open Method (ServerXMLHTTP/IServerXMLHTTPRequest)
' ************************************* ' サーバーオブジェクトを使用しています ' ************************************* Set objHTTP = Wscript.CreateObject("Msxml2.ServerXMLHTTP") lResolve = 60 * 1000 lConnect = 60 * 1000 lSend = 60 * 1000 lReceive = 60 * 1000 ' Stream オブジェクト の作成 Set Stream = CreateObject("ADODB.Stream") ' Stream のオープン Stream.Open ' Stream タイプの指定 Stream.Type = 1 ' StreamTypeEnum の adTypeBinary ' 既存ファイルの内容を Stream に読み込む Stream.LoadFromFile "target.png" ' ▼ ご自分の環境に書き換えてください。 Call objHTTP.Open("POST","https://yourdomain/test/put.php",False) nLen = Stream.Size data = Stream.Read(nLen) Call objHTTP.SetRequestHeader("Content-Length",nLen) Call objHTTP.SetTimeouts(lResolve, lConnect, lSend, lReceive) Call objHTTP.Send(data) Wscript.Echo objHTTP.responseText ' Stream を閉じる Stream.Close
setRequestHeader Method setTimeouts Method send Method Stream オブジェクト ※ Microsoft は VB を真剣にやめたいみたいですね なので、以下には JScript で書いたソースコードです。JScript では、大文字、小文字が区別されるので、いろいろ注意する必要があります。 upload.js
// ************************************* // サーバーオブジェクトを使用しています // ************************************* objHTTP = new ActiveXObject("Msxml2.ServerXMLHTTP") lResolve = 60 * 1000 lConnect = 60 * 1000 lSend = 60 * 1000 lReceive = 60 * 1000 // ************************************* // バイナリファイル // ************************************* Stream = new ActiveXObject("ADODB.Stream") upload_file = "winofsql.png" // ************************************* // アップロード先 // localhost(AN HTTPD)でテストできます // ************************************* upload_url = "http://yourdomain/put/put.php" // ************************************* // 準備 // ************************************* objHTTP.open( "POST",upload_url, false ) // ************************************* // バイナリデータ取得 // ************************************* Stream.Open() Stream.Type = 1 Stream.LoadFromFile(upload_file) nLen = Stream.Size data = Stream.Read(nLen) // ************************************* // 送信 // ************************************* objHTTP.setRequestHeader("Content-Length",nLen) objHTTP.setTimeouts(lResolve, lConnect, lSend, lReceive) objHTTP.send(data) WScript.Echo(objHTTP.responseText) // Stream を閉じる Stream.Close
ActiveXObject オブジェクト 関連する記事
VBScriptドキュメント
|
【VBS + インターネットの最新記事】
- VBScript / JScript: Windows標準のオブジェクト( CDO.Message ) と ロリポップメールを使ってメール送信
- VBScriptの関数定義をWEB上に置いて、Msxml2.ServerXMLHTTP で読みだして PCで使用する
- VBScript : Seesaa ブログのエクスポートを呼び出して全てをバックアップするスクリプト
- WSF : VBScript の 関数定義を WEB 上に置いて PC で使用する
- VBScript を使って HTTPプロトコルで PHP へファイルをアップロードする方法
- VBScript で Seesaaブログへ禁止ワード一括登録( アップロード )
- VBScript で半角カナから全角カナへ変換するのに、php の mb_convert_kana を呼び出す
- VBScript : URLEncode( OAuth 用 rfc3986 )
- VBS : Textt サービスに書き込んだテキストを PC にダウンロード(配布)する
- IE限定。信頼するサイトのページをボタンから印刷プレビュー表示する
【VBScript関連のカテゴリ】