<JOB>
<COMMENT>
************************************************************
ファイルアップロードデータ作成用
************************************************************
</COMMENT>
<OBJECT id="Stream" progid="ADODB.Stream" />
<OBJECT id="StreamWorkBin" progid="ADODB.Stream" />
<OBJECT id="StreamBin" progid="ADODB.Stream" />
<COMMENT>
************************************************************
HTTP通信用
************************************************************
</COMMENT>
<OBJECT id="objHTTP" progid="MSXML2.XMLHTTP" />
<SCRIPT language=VBScript>
strUser = "xxxxxxxx"
strPass = "xxxxxxxx"
strGallery = "999999"
' *********************************************************
' ログイン
' *********************************************************
target_url = "https://login.nifty.com/service/login"
Call objHTTP.Open( "POST",target_url, False )
Call objHTTP.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
strData = "username="&strUser&"&password="&strPass
Call objHTTP.SetRequestHeader("Content-Length",Len(strData))
Call objHTTP.Send(strData)
' *********************************************************
' 目的ページへ移動
' *********************************************************
Call objHTTP.Open("GET","http://app.cocolog-nifty.com/t/app/gallery/manage?__mode=start_upload&set_id=" & strGallery,False)
Call objHTTP.Send("")
' アップロードページの HTML が必要な場合は以下が必要ですが
' 直接アップロードでは必要ありませんでした
'Call objHTTP.Open("GET","http://app.cocolog-nifty.com/t/app/gallery/manage?__mode=start_upload&set_id=" & strGallery & "&nwsThough=1",False)
'Call objHTTP.Send("")
' *********************************************************
' アップロード
' *********************************************************
target_url = "http://app.cocolog-nifty.com/t/app/gallery/manage"
Call objHTTP.Open( "POST",target_url, False )
' File Upload 用 HTTP ヘッダ
strBoundary = DateDiff("s", "1970/1/1 0:00:00",DateAdd("h",-9,now))
Call objHTTP.setRequestHeader("Content-Type", "multipart/form-data; boundary="&strBoundary)
' バイナリ変換用ストリーム
StreamWorkBin.Open
StreamWorkBin.Type = 1
' 最終バイナリストリーム
StreamBin.Open
StreamBin.Type = 1
' テキストストリーム
Stream.Open
Stream.Charset = "shift_jis"
' *********************************************************
' 開始セクション
' アップロードするファイル名はここで設定します
' ( 画像形式にあった、Content-Type が必要です )
' ※ フィールドを増やせば一度に複数アップロードも
' ※ 可能なはずです
' *********************************************************
Stream.WriteText "--" & strBoundary & vbLf
Stream.WriteText "Content-Disposition: form-data; name=""__mode""" & vbLf & vbLf
Stream.WriteText "upload" & vbLf
Stream.WriteText "--" & strBoundary & vbLf
Stream.WriteText "Content-Disposition: form-data; name=""set_id""" & vbLf & vbLf
Stream.WriteText "492403" & vbLf
Stream.WriteText "--" & strBoundary & vbLf
Stream.WriteText "Content-Disposition: form-data; name=""num_photos""" & vbLf & vbLf
Stream.WriteText "5" & vbLf
Stream.WriteText "--" & strBoundary & vbLf
Stream.WriteText "Content-Disposition: form-data; name=""file1""; filename=""1248964999094603.png""" & vbLf
Stream.WriteText "Content-Type: image/png" & vbLf
Stream.WriteText vbLf
Stream.Position = 0
' テキストをバイナリに変換
Stream.CopyTo StreamWorkBin
' 第一セクションを書き込み
StreamWorkBin.Position = 0
StreamBin.Write StreamWorkBin.Read(StreamWorkBin.Size)
' 画像を読み込む
' 実際の画像ファイルのパスで読み込みます
StreamWorkBin.LoadFromFile("1248964999094603.png")
' 画像を書き込み
StreamBin.Write StreamWorkBin.Read(StreamWorkBin.Size)
' バイナリワークをいったん閉じる
StreamWorkBin.Close
StreamWorkBin.Open
StreamWorkBin.Type = 1
' テキストをいったん閉じる
Stream.Close
Stream.Open
Stream.Charset = "shift_jis"
' 終了セクション
Stream.WriteText vbLf & "--" & strBoundary & "--" & vbLf
Stream.Position = 0
' テキストをバイナリに変換
Stream.CopyTo StreamWorkBin
' 終了セクションを書き込み
StreamWorkBin.Position = 0
StreamBin.Write StreamWorkBin.Read(StreamWorkBin.Size)
' 送信データを取得
nLen = StreamBin.Size
StreamBin.Position = 0
strData = StreamBin.Read(nLen)
'Call StreamBin.SaveToFile( "result.dat", 2 )
Stream.Close
StreamBin.Close
StreamWorkBin.Close
' *********************************************************
' 投稿データとその長さ
' *********************************************************
Call objHTTP.SetRequestHeader("Content-Length",nLen)
' *********************************************************
' 送信( アップロード )
' *********************************************************
Call objHTTP.Send(strData)
Wscript.Echo("処理が終了しました")
</SCRIPT>
</JOB>