How to retrieve raw HTTP Post Data

Discussion in 'ASP .Net' started by manheim, Nov 15, 2007.

  1. manheim

    manheim Guest

    I have a page posting a raw jpg to me via HTTP POST. All reference
    I've found is centered around retrieving POST data as name/value pairs
    which will not work in this situation.
    What I need to do is retrieve the raw POST data and save it as a
    jpg.

    Here is some php code that does the same thing for reference:
    $jfh = fopen($jpeg_file, 'w') or die("can't open file");
    fwrite($jfh, $GLOBALS['HTTP_RAW_POST_DATA']);
    fclose($jfh);

    I assume there is some way to access POST data as a stream and then
    write that stream to a file, but it's not clear to me how. Perhaps I
    need to use Request.Form.GetObjectData, but I'm not sure how to setup
    SerializationInfo and StreamingContext appropriately.

    Any thoughts or suggestions would be much appreciated.
    Thanks in advance!

    Dan
     
    manheim, Nov 15, 2007
    #1
    1. Advertisements

  2. manheim

    Guest Guest

    use Request.InputStream:

    FileStream log = new FileStream("C:\\dump.tmp",
    FileMode.OpenOrCreate);
    byte[] buffer = new byte[1024];
    int c;
    while ((c = Request.InputStream.Read(buffer, 0, buffer.Length)) > 0)
    {
    log.Write(buffer, 0, c);
    }
    log.Close();



    -- bruce (sqlwork.com)
     
    Guest, Nov 15, 2007
    #2
    1. Advertisements

  3. manheim

    manheim Guest

    Thanks! That looks like it will do the trick.
    The one challenge is that I am also getting data through QueryString.
    It looks like using InputStream will put all POST and GET data (and
    presumably other Request data like Cookies) together into one file.
    I assume that's what's happening since I can't open the jpg after I
    save it out.

    Is there a way to separate the POST data?

    Dan

     
    manheim, Nov 15, 2007
    #3
  4. manheim

    Guest Guest

    Consider using an HTTP Sniffer like Fiddler to examine the actual POST so you
    can see how it is actually being sent.
    --Peter
    "Inside every large program, there is a small program trying to get out."
    http://www.eggheadcafe.com
    http://petesbloggerama.blogspot.com
    http://www.blogmetafinder.com



     
    Guest, Nov 15, 2007
    #4
  5. manheim

    Guest Guest

    in the html payload, the cookie is in the header, and is just before the
    postdata. the url parameters are actuallly on the same line as action
    (GET/POST).

    see the Request object, you can get the cookie, headers and querystring
    (parsed/unparsed).

    -- bruce (sqlwork.com)


     
    Guest, Nov 15, 2007
    #5
  6. manheim

    manheim Guest

    Thanks. Turned out there was an extra byte in their stream breaking
    it, so it's all good. Request.InputStream got the raw POST data and
    Request.QueryString still gave me the QS vars.
    Thanks for all the help!

     
    manheim, Nov 15, 2007
    #6
    1. Advertisements

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.