9491


1枚の画像をアップロードし、返ってきたデータを受信するまでできました。  
しかし、複数しようとなると中々できませんでした。  
単純にfor文をかけているのですが、どのようにすればよろしいでしょうか？  
lines.lengthは画像の数です。  
サーバは画像を1枚アップするごとに一つのXMLデータを返します。

[code]

    // ローカル画像ディレクトリ
    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);
    
[/code]

例えば2枚アップロードした時、この表示が正解  
content = <http://example.com/img/1.jpg>  
content = <http://example.com/img/2.jpg>

現在はこう  
content = <http://example.com/img/2.jpg>


CC BY-SA 3.0
2015-04-23T00:58:16.820
9487
2017-06-19T05:11:39.723
2017-06-19T05:11:39.723
5793
7973
question
c#
usingとfor文を使った複数ファイルアップロード


1つのリクエストについて、`lines`で指定されるファイルを連結して1度に送信するコードになっています。おそらく意図したものでは無いでしょう。

おそらく1リクエストにつき1ファイルを送信するものでしょうから、`for`ループがこのコード全体を囲む形になっている必要があります。

[code]

    for(int i = 0; i<lines.Length; i++)
    {
        using (FileStream fs = new FileStream
          (img+"\\"+(i+1)+".jpg", FileMode.Open, FileAccess.Read))
        {
            HttpWebRequest req = (HttpWebRequest)WebRequest.Create
                ("https://aaa/atompub/atomrootend");
    
            using (Stream dataStream = req.GetRequestStream())
            {
                fs.CopyTo(dataStream);
            }
    
            HttpWebResponse res = (HttpWebResponse)req.GetResponse();
    
            Console.WriteLine("content = " + content);
        }
    }
    
[/code]


CC BY-SA 3.0
2015-04-23T01:14:45.037
9491
2015-04-23T01:14:45.037
5793
9487
answer