C# NET c与HTTP原始POST数据的等价性是什么?

C# NET c与HTTP原始POST数据的等价性是什么?,c#,flash,C#,Flash,我试图用C语言模拟下面的PHP代码# 问题是Request.InputStream不包含从以下Flash Actionscript发布的原始图像数据: var jpgSource:BitmapData = new BitmapData(mc_avatar.width, mc_avatar.height); jpgSource.draw(mc_avatar); trace(jpgSource); var jpgEncoder:JPGEncoder = new JPGEncoder(85); va

我试图用C语言模拟下面的PHP代码#

问题是Request.InputStream不包含从以下Flash Actionscript发布的原始图像数据:

var jpgSource:BitmapData = new BitmapData(mc_avatar.width, mc_avatar.height);
jpgSource.draw(mc_avatar);
trace(jpgSource);

var jpgEncoder:JPGEncoder = new JPGEncoder(85);
var jpgStream = jpgEncoder.encode(jpgSource);
var header:URLRequestHeader = new URLRequestHeader("Content-type", "application/octet-stream");
var jpgURLRequest:URLRequest = new URLRequest("/cms3/getpostedimage?name=bloke.jpg");
jpgURLRequest.requestHeaders.push(header);
jpgURLRequest.method = URLRequestMethod.POST;
jpgURLRequest.data = jpgStream;
navigateToURL(jpgURLRequest, "_self");

我确信我遗漏了一些非常基本的东西,因此任何指针都会非常感谢。

您正在调用
Response.Write(Request.InputStream)
,并假设这将把所有数据从输入流复制到输出流。我看没有理由相信是这样的。我强烈怀疑它会在输入流上调用
ToString()
,然后将其作为文本数据写出

我建议你试试这个:

CopyStream(Request.InputStream, Response.OutputStream);
其中,
CopyStream
是一种实现如下的实用方法:

public static void CopyStream(Stream input, Stream output)
{
    byte[] buffer = new byte[8192];
    int read;
    while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
    {
        output.Write(buffer, 0, read);
    }
}

呃。。。愚蠢的问题,但这到底应该实现什么?你为什么要将他们刚刚发送给你的文件发送回用户?嗨,乔恩,你说得对!我玩弄它,意识到它在调用ToString()。所以我把:var buffer=newbyte[Request.InputStream.Length];Request.InputStream.Read(buffer,0,buffer.Length);res.BinaryWrite(缓冲区);您的当然更好,因此将使用:-)是的,忽略流的结果不是一个好主意。请阅读-不能保证您将在一次调用中获得结果。
CopyStream(Request.InputStream, Response.OutputStream);
public static void CopyStream(Stream input, Stream output)
{
    byte[] buffer = new byte[8192];
    int read;
    while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
    {
        output.Write(buffer, 0, read);
    }
}