Ajax上傳表單資料和檔案

來源:互聯網
上載者:User

目前遇到一個需求,ajax提交資料的同時上傳檔案, 發現FormData是一個很有用的屬性。在mvc中以下代碼直接將表單資料和上傳的檔案提交到一個Model,確實爽的不得了。

var TestTakerUI_form = $("#TestTakerUI_form");

        var url = TestTakerUI_form.attr('action');
        
        var form = document.getElementById("TestTakerUI_form")
        var fileObj = document.getElementById("LogoFile").files;
        var formdata = new FormData(form);
        formdata.append("LogoFile", fileObj);
        
        var xhr;
        if (window.XMLHttpRequest) {
            xhr = new XMLHttpRequest();
        }
        else {
            xhr = new ActiveXObject("Microsoft.XMLHTTP");
        }
        xhr.open('POST', url, true);
        xhr.onreadystatechange = function (response) {
            if (xhr.readyState == 4) {
                if (xhr.status == 200) {
                    $("#content_5").html(xhr.responseText);
                    
                }
            }
        };
        xhr.send(formdata);

     

服務端model,直接將檔案傳了過來,並且model裡麵包含了其他的表單屬性

 

更多關於formdata的資訊,請參考:https://developer.mozilla.org/en-US/docs/Web/API/FormData
 

但是Formdata並不是每種瀏覽器都支援,如下所示:

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support 7+ 4.0 (2.0) 10+ 12+ 5+
append with filename (Yes) 22.0 (22.0) ? ? ?

 因此,可以考慮其他上傳組件:

http://www.uploadify.com/,
http://jquery.malsup.com/form/,

http://www.phpletter.com/Demo/AjaxFileUpload-Demo/,

 http://www.fyneworks.com/jquery/multiple-file-upload/

 

 也可以google下uploader,發現可以用的組件還真是多啊!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.