usingとfor文を使った複数ファイルアップロード
1枚の画像をアップロードし、返ってきたデータを受信するまでできました。
しかし、複数しようとなると中々できませんでした。
単純にfor文をかけているのですが、どのようにすればよろしいでしょうか?
lines.lengthは画像の数です。
サーバは画像を1枚アップするごとに一つのXMLデータを返します。
// ローカル画像ディレクトリ
string img = dirResize;
// ブログAtompubAPIルートエンドURL
HttpWebRequest req = (HttpWebRequest)WebRequest.Create
("https://aaa/atompub/atomrootend");
req.Method = "POST";
req.Headers.Add("Authorization", "WSSE profile='UsernameToke'");
req.Headers.Add("X-WSSE", wsseHeader());
req.ContentType = "image/jpeg";
req.Timeout = 20000;
// ローカル画像をサーバにアップロード
using (Stream dataStream = req.GetRequestStream())
{
for(int i = 0; i<lines.Length; i++)
{
using (FileStream fs = new FileStream
(img+"\\"+(i+1)+".jpg", FileMode.Open, FileAccess.Read))
{
fs.CopyTo(dataStream);
}
}
}
//サーバーからの応答を受信するためのWebResponseを取得
HttpWebResponse res = (HttpWebResponse)req.GetResponse();
//応答データを受信するためのStreamを取得
Stream resStream = res.GetResponseStream();
//受信して表示
StreamReader sr =
new StreamReader(resStream, enc);
// 受信するデータはXML形式
string content = sr.ReadToEnd();
xdoc.LoadXml(content);
// XMLにある画像ソースの画像URLだけを抽出
collect(xdoc, "content", "src", (val) => Console.WriteLine(val));
Console.WriteLine("content = " + content);
例えば2枚アップロードした時、この表示が正解
content = http://example.com/img/1.jpg
content = http://example.com/img/2.jpg
現在はこう
content = http://example.com/img/2.jpg