C#.net相当于HTTP_RAW_POST_DATA?

时间:2009-11-10 13:50:54

标签: .net asp.net

想在c#中模仿php代码。

我想捕获从以下Flash Actionscript发布的原始图像数据:

   function onSaveJPG(e:Event):void{
        var myEncoder:JPGEncoder = new JPGEncoder(100);
        var byteArray:ByteArray = myEncoder.encode(bitmapData);

        var header:URLRequestHeader = new URLRequestHeader("Content-type", "application/octet-stream");

        var saveJPG:URLRequest = new URLRequest("save.aspx");
        saveJPG.requestHeaders.push(header);
        saveJPG.method = URLRequestMethod.POST;
        saveJPG.data = byteArray;

        var urlLoader:URLLoader = new URLLoader();
        urlLoader.addEventListener(Event.COMPLETE, sendComplete);
        urlLoader.load(saveJPG);

        function sendComplete(event:Event):void{
            warn.visible = true;
            addChild(warn);
            warn.addEventListener(MouseEvent.MOUSE_DOWN, warnDown);
            warn.buttonMode = true;
        }

    }

在Save.aspx.cs页面的页面加载上。     这是我试图模仿的PHP代码 -

if(isset($GLOBALS["HTTP_RAW_POST_DATA"])){
    $jpg = $GLOBALS["HTTP_RAW_POST_DATA"];
    $img = $_GET["img"];
    $filename = "images/poza_". mktime(). ".jpg";
    file_put_contents($filename, $jpg);
} else{
    echo "Encoded JPEG information not received.";
}

任何指针和建议都会非常感激。谢谢!

2 个答案:

答案 0 :(得分:6)

这样的事情对你有用吗?

byte[] data = Request.BinaryRead(Request.TotalBytes);

答案 1 :(得分:3)

您应该可以通过访问Request.InputStream来获取原始HTTP发布数据。从流中读取并将其写入文件。

编辑:请使用詹姆斯对Request.BinaryRead的建议。对于写作,您可以使用File.WriteAllBytes(filename, data)。 asp.net中的$_GET等效项为Request.QueryString