SQLの窓

2014年07月24日


VB.net(2010) : COMの Msxml2.ServerXMLHTTP を使用して WEBアプリにバイナリデータを POST する

以下のように参照して下さい。


コンソールアプリケーションです。
Imports MSXML2
Imports System.IO

Module Module1

	Sub Main()
		' ****************************
		' http 通信用のオブジェクトを作成
		' ****************************
		Dim ServerXML As New ServerXMLHTTP60()

		' ****************************
		' 呼び出す URL を設定
		' ****************************
		Dim URL As String = "http://yourdomain/put/put.php"

		' ****************************
		' POST する為に開く
		' ****************************
		ServerXML.open("POST", URL, False)

		' ****************************
		' タイムアウトの設定
		' ****************************
		Dim lResolve As Integer = 60 * 1000
		Dim lConnect As Integer = 60 * 1000
		Dim lSend As Integer = 60 * 1000
		Dim lReceive As Integer = 60 * 1000
		ServerXML.setTimeouts(lResolve, lConnect, lSend, lReceive)

		' ****************************
		' ファイルを読み込む為のオブジェクト
		' ****************************
		Dim fs As New FileStream( _
		 "C:\user\web\web\put\winofsql.png", _
		 FileMode.Open, FileAccess.Read)

		' ****************************
		'ファイルを読み込むバイト型配列
		' ****************************
		Dim bs(fs.Length - 1) As Byte
		'ファイルの内容をすべて読み込む
		fs.Read(bs, 0, bs.Length)
		'閉じる
		fs.Close()

		' ****************************
		' 送信するデータの長さをヘッダにセット
		' ****************************
		ServerXML.setRequestHeader("Content-Length", bs.Length)
		' 送信
		ServerXML.send(bs)

		' ****************************
		' 結果の表示
		' ****************************
		Console.WriteLine(ServerXML.responseText)

		Console.ReadLine()
	End Sub

End Module

本来は、.vbs または .js を拡張子として持つスクリプトから実行するものです。

VBscript(または JScript) で簡単にバイナリファイルをアップロードする

参照した Imports MSXML2 によって、Framework からの処理が可能になっています。PHP 側は、スクリプトで利用した PHP と同じもので、バイト配列を直接 POST して PHP では以下のようにして受け取ります
<?
session_start();
$id = session_id();


$fp = fopen( "php://input", "r" );
$wfp = fopen( "image/$id.png", "w" );

while( $ret = fread( $fp, 4096 ) ) {

	fwrite( $wfp, $ret );

}

fclose($wfp);
fclose($fp);


print $id . ".png\n";
?>
で画像が保存されました


この PHP では http ヘッダを指定していませんので、php ソースのキャラクタセットは UTF-8N にする必要があります。他のキャラクタセットで php のソースコードを記述する必要がある場合は、http ヘッダで Content-Type の Charset を明示して下さい。

関連する記事

VB.net : COMの Msxml2.ServerXMLHTTP を使用して http 通信を行う



タグ:VB.NET com
posted by lightbox at 2014-07-24 21:07 | VB.NET : 通信 | このブログの読者になる | 更新情報をチェックする
container 終わり



フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり