C# NET c与HTTP原始POST数据的等价性是什么?
我试图用C语言模拟下面的PHP代码# 问题是Request.InputStream不包含从以下Flash Actionscript发布的原始图像数据: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
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);
}
}