3

Streama (画像を含む) の内容を a ( StreamWriterwebrequest を書いている場所)にコピーしたいのですが、これを行うことができません。

試してみimageStream.CopyTo(streamWriter);ましたが、StreamWriterではなく別のストリームにしかコピーできないため、うまくいきませんでした。

私はいくつかが私を助けることができることを願っています!

編集:コードが追加されました

request.BeginGetRequestStream((requestResult =>
{
    Stream stream = request.EndGetRequestStream(requestResult);
    using (StreamWriter streamWriter = new StreamWriter(stream))
    {
        streamWriter.WriteLine(boundary);
        streamWriter.WriteLine("Content-Disposition: form-data; name=\"json\"");
        streamWriter.WriteLine("Content-Type: text/plain; charset=utf-8");
        streamWriter.WriteLine("Content-Transfer-Encoding: 8bit");

        streamWriter.WriteLine(json);

        streamWriter.WriteLine(boundary);
        streamWriter.WriteLine("Content-Disposition: form-data; name=\"image\"; filename=\"image.jpg\"");
        streamWriter.WriteLine("Content-Type: application/octet-stream");
        streamWriter.WriteLine("Content-Transfer-Encoding: binary");
        streamWriter.WriteLine("");

        streamWriter.Flush();

        image.CopyTo(streamWriter.BaseStream);
        // image.CopyTo(stream); // also not working

        streamWriter.WriteLine("");
        streamWriter.WriteLine(boundary);

        streamWriter.Close();
    }

    ExecuteRequest(this, request);

}), request);
4

1 に答える 1

2

私が使用しなければならなかった @decyclone への Thnx は、streamWriter.BaseStreamこの前に Stream.Flush() を使用することも重要です。そうしないと、間違った順序で書き込まれます。

        request.BeginGetRequestStream((requestResult =>
        {
            using (StreamWriter streamWriter = new StreamWriter(request.EndGetRequestStream(requestResult)))
            {
                streamWriter.WriteLine(boundary);
                streamWriter.WriteLine("Content-Disposition: form-data; name=\"json\"");
                streamWriter.WriteLine("Content-Type: text/plain; charset=utf-8");
                streamWriter.WriteLine("Content-Transfer-Encoding: 8bit");

                streamWriter.WriteLine(json);

                streamWriter.WriteLine(boundary);
                streamWriter.WriteLine("Content-Disposition: form-data; name=\"image\"; filename=\"image.jpg\"");
                streamWriter.WriteLine("Content-Type: application/octet-stream");
                streamWriter.WriteLine("Content-Transfer-Encoding: binary");
                streamWriter.WriteLine("");

                streamWriter.Flush();

                streamWriter.CopyTo(stream.BaseStream);

                streamWriter.WriteLine("");
                streamWriter.WriteLine(boundary);

                streamWriter.Close();
            }

            ExecuteRequest(this, request);

        }), request);
于 2012-10-19T19:15:38.173 に答える