2009-11-10 5 views
4

Vous voulez imiter le code php en C#.C# .net équivilent de HTTP_RAW_POST_DATA?

Je veux capturer des données d'images brutes affichées à partir du Flash Actionscript suivante:

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; 
     } 

    } 

Sur chargement de la page de la page Save.aspx.cs. Voici le code PHP que je suis en train d'imiter -

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."; 
} 

Tous les pointeurs et suggestion serait très apprécié. Merci !

Répondre

6

Est-ce que quelque chose comme ceci fonctionne pour vous?

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

+1, c'est plus simple que d'utiliser InputStream. – Heinzi

+0

thnks .... cela a fonctionné :) !!! –

3

Vous devriez pouvoir obtenir les données HTTP brutes en accédant à Request.InputStream. Lisez le flux et écrivez-le dans un fichier.

EDIT: Utilisez la suggestion de James de Request.BinaryRead. Pour l'écriture, vous pouvez utiliser File.WriteAllBytes(filename, data). L'équivalent $_GET dans asp.net est Request.QueryString.