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 : 通信 | このブログの読者になる | 更新情報をチェックする

2011年10月16日


VB.net : TKFP.DLL 1.4.3 を使って FTPS でファイル(フォルダ)の一覧を取得する

.NET用FTPクラスライブラリ (TKFP.DLL) 1.4.3
オンラインライブラリ

サンプル付きをダウンロードすると、Form で動くサンプルが VB.net 
と C# で付いてきます。
( プライベートクラスを ListViewItem を継承して作成して ListView で表示するサンプル )



以下はそれを元にバッチでディリクトリ内の
フォルダファイルとの一覧を表示するようにしたものです
Imports TKFP.Net
Imports TKFP.IO

Module Module1

	Sub Main()

		' FTP 用基本認証
		Dim logon As BasicFtpLogon = New BasicFtpLogon("ユーザ", "パスワード")
		' FTP クライアント
		Dim FtpClient As FtpClient = New FtpClient(logon, "サーバ", 21)
		'パッシブモード
		FtpClient.ConnectionMode = ConnectionModes.Passive
		'リストの取得コマンドを設定
		FtpClient.ListType = TKFP.Net.ListType.LIST
		'取得したリスト情報の有効時間を設定
		FtpClient.ListCacheValidityInterval = 60
		FtpClient.FileSystemCacheValidityInterval = 60

		' SSL で接続する
		FtpClient.AuthenticationProtocol = AuthenticationProtocols.Explicit_SSL

		' LIST情報の解析クラスを指定
		FtpClient.ListDataLoader = New TKFP.IO.UnixListDataLoader()

		'日本語ファイル名の文字コードを指定( shift_jis がデフォルト )
		FtpClient.FileNameCharset = "sjis"

		' 接続
		If Not FtpClient.Connect() Then
			FtpClient.Close()
			FtpClient = Nothing
			Return
		End If

		' メッセージ
		If FtpClient.IsEncrypted Then
			Console.WriteLine("暗号化されています")
		End If

		' ディレクトリオブジェクトを作成
		Dim CurrentDirectory As DirectoryInfo = New DirectoryInfo(FtpClient, "対象フォルダのパス")

		'サブフォルダの一覧取得
		Dim SubFolder As DirectoryInfo
		For Each SubFolder In CurrentDirectory.GetDirectories()
			Console.WriteLine("[" + SubFolder.Name + "]")
		Next

		'ファイル一覧取得
		Dim file As FileInfo
		For Each file In CurrentDirectory.GetFiles()
			Console.WriteLine(file.Name)
		Next

		' 接続解除
		FtpClient.Close()
		FtpClient = Nothing

		Console.ReadLine()

	End Sub

End Module

関連する記事

VB.net : TKMP.DLL 3.0.1 を使って IMAP でメール本文の一覧を取得する


posted by lightbox at 2011-10-16 17:18 | VB.NET : 通信 | このブログの読者になる | 更新情報をチェックする

2011年10月01日


VB.net : TKMP.DLL 3.0.1 を使って IMAP でメール本文の一覧を取得する

.NET用メール送受信クラスライブラリ (TKMP.DLL) 3.0.1

TKMP は、VB.net や C# から日本語環境を気にしないでメールの送受信
が行える貴重なライブラリですが、IMAP に対応しておられるのに添付さ
れているドキュメントや、WEB 上のサンプルコードにその記述がありま
せんでしたので、作成しました。

※ IMAP は 2011/08/11 に対応されています。
オンラインドキュメント
Imports TKMP.Net
Imports TKMP.Reader

Module Module1

	Sub Main()

		' IMAP 用基本認証
		Dim logon As BasicImapLogon = New BasicImapLogon("ユーザ", "パスワード")
		' IMAP 用ログイン( 993 は、SSL 用 )
		Dim client As ImapClient = New ImapClient(logon, "ホスト名", 993)

		' SSL で接続する
		client.AuthenticationProtocol = AuthenticationProtocols.SSL

		' 接続
		client.Connect()

		' メールデータ一覧の取得
		Dim md_i As MailData_Imap() = client.GetMailList()

		' メールデータの数
		Console.WriteLine(md_i.Length)

		' メールデータの本文を取得
		Dim reader As MailReader = Nothing
		Dim Body_data As System.IO.Stream = Nothing

		' 全て表示
		For i As Integer = 0 To md_i.Length - 1

			' メッセージを読み込む
			md_i(i).ReadBody()

			' 読み出しの為にストリームを取得
			Body_data = md_i(i).DataStream

			' メールリーダで本文を解析
			reader = New TKMP.Reader.MailReader(Body_data, False)

			' マルチパートの時は最初に見つかったテキストセクションの本文
			Console.WriteLine(reader.MainText)

		Next

		' 接続解除
		client.Close()

		Console.ReadLine()

	End Sub

End Module

関連する Microsfot のドキュメント

POP3 アクセス用および IMAP4 アクセス用の TLS と SSL の構成: Exchange 2010 SP1 のヘルプ



posted by lightbox at 2011-10-01 16:05 | VB.NET : 通信 | このブログの読者になる | 更新情報をチェックする
Seesaa の各ページの表示について
Seesaa の 記事がたまに全く表示されない場合があります。その場合は、設定> 詳細設定> ブログ設定 で 最新の情報に更新の『実行ボタン』で記事やアーカイブが最新にビルドされます。

Seesaa のページで、アーカイブとタグページは要注意です。タグページはコンテンツが全く無い状態になりますし、アーカイブページも歯抜けページはコンテンツが存在しないのにページが表示されてしまいます。

また、カテゴリページもそういう意味では完全ではありません。『カテゴリID-番号』というフォーマットで表示されるページですが、実際存在するより大きな番号でも表示されてしまいます。

※ インデックスページのみ、実際の記事数を超えたページを指定しても最後のページが表示されるようです

対処としては、このようなヘルプ的な情報を固定でページの最後に表示するようにするといいでしょう。具体的には、メインの記事コンテンツの下に『自由形式』を追加し、アーカイブとカテゴリページでのみ表示するように設定し、コンテンツを用意するといいと思います。


※ エキスパートモードで表示しています

アーカイブとカテゴリページはこのように簡単に設定できますが、タグページは HTML 設定を直接変更して、以下の『タグページでのみ表示される内容』の記述方法で設定する必要があります

<% if:page_name eq 'archive' -%>
アーカイブページでのみ表示される内容
<% /if %>

<% if:page_name eq 'category' -%>
カテゴリページでのみ表示される内容
<% /if %>

<% if:page_name eq 'tag' -%>
タグページでのみ表示される内容
<% /if %>
この記述は、以下の場所で使用します
container 終わり

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

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