Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

enctype = "multipart/form-data" works different between ie9 and chrome

I want to post some data to another domain with the enctype equal to multipart/form-data, because I want the unmodified data in the server side. Here is my test code:

<textarea name="txt" rows="20" cols="80">
</textarea>
<script>
function x_domain_post(url, data)
{
    var dd = document.createElement('div');
    var ifrname = "client_proxy";
    dd.innerHTML = "<iframe id='" + ifrname + "' name='" + ifrname + "' width=0 height=0 ></iframe>";
    document.getElementsByTagName('body')[0].appendChild(dd);
    var ifr = document.getElementById(ifrname);

    var f = document.createElement('form');
    f.action = url;
    f.method = "post";
    f.enctype = "multipart/form-data";
    f.target = ifr.name;
    f.innerHTML = f.innerHTML + "<textarea name='request'>default</textarea>";
    document.getElementsByTagName("body")[0].appendChild(f);
    document.getElementsByName("request")[0].value=data;
    f.submit()
    setTimeout(function(){document.getElementsByTagName("body")[0].removeChild(f);}, 1000);
}

</script>
<button onclick="x_domain_post('http://192.168.232.128/add', document.getElementsByName('txt')[0].value)">

The request in chrome is:

...
Content-Type:multipart/form-data; boundary=----WebKitFormBoundary9zCD31eJSHkdb8ul
...
------WebKitFormBoundary9zCD31eJSHkdb8ul
Content-Disposition: form-data; name="request"

a

b

o
------WebKitFormBoundary9zCD31eJSHkdb8ul--

But in IE9:

POST /add HTTP/1.1
...
Content-Type: application/x-www-form-urlencoded
...
request=a%0D%0A%0D%0Ab%0D%0A%0D%0Ao

Any of your help will be appreciated!

like image 360
pvd Avatar asked Jun 08 '11 12:06

pvd


1 Answers

Does this help?

http://www.bennadel.com/blog/1273-Setting-Form-EncType-Dynamically-To-Multipart-Form-Data-In-IE-Internet-Explorer-.htm

Apparently in IE, you have to set the "encoding" of the form rather than the "enctype". The good news is, you can set both values without concern and this will take care of the problem

like image 130
Matthew Wilson Avatar answered Sep 25 '22 15:09

Matthew Wilson