IE和FireFox 對FORM enctype屬性的認識存在差異,一般來說對於動態建立的form,如果因為要上傳檔案的原因很自然的會使用類似如下的代碼:
1 //create form
2 this.form = document.createElement("FORM");
3 this.form.id = "jasonUploadForm";
4 this.form.name = "jasonUploadForm";
5 this.form.method = "post";
6 this.form.action = actionTarget;
7 this.form.enctype = "multipart/form-data";
8 document.body.appendChild(this.form);
這段代碼錶面上看沒有什麼問題,但在IE中卻還是無法改變FORM的編碼格式,
也就是說傳到服務端的ContentType仍然是:"application/x-www-form-urlencoded”.
但在FireFox中卻能正確識別,也就能正常上傳檔案。
那如何才能使IE和FireFox都能正確按照我們的要求編碼FORM 資料呢?找了N久終於找到瞭解決方案,就是直接指定encoding就行了,且看如下正確的代碼:
1 //create form
2 this.form = document.createElement("FORM");
3 this.form.id = "jasonUploadForm";
4 this.form.name = "jasonUploadForm";
5 this.form.method = "post";
6 this.form.action = actionTarget;
7
8 //this.form.setAttribute("enctype", "multipart/form-data");
9 this.form.encoding = "multipart/form-data";
10
11 document.body.appendChild(this.form);