天天看點

HTML5中用 jQuery + Ajax 上傳檔案

  HTML5 中已經可以用 Ajax 上傳檔案了,而且代碼非常簡單,借助 FormData 類即可發送檔案資料。

<?php
if (isset($_POST['upload'])) { 
    var_dump($_FILES);
    move_uploaded_file($_FILES['upfile']['tmp_name'], 'up_tmp/'.time().'.dat');
    //header('location: test.php');
    exit;
}
?>
<!doctype html>
<html lang="zh">
<head>
<meta charset="utf-8">
<title>HTML5 Ajax Uploader</title>
<script src="jquery-2.1.1.min.js"></script>
</head>

<body>
<p><input type="file" id="upfile"></p>
<p><input type="button" id="upJS" value="用原生JS上傳"></p>
<p><input type="button" id="upJQuery" value="用jQuery上傳"></p>
<script>
/*原生JS版*/
document.getElementById("upJS").onclick = function() {
    /* FormData 是表單資料類 */
    var fd = new FormData();
    var ajax = new XMLHttpRequest();
    fd.append("upload", );
    /* 把檔案添加到表單裡 */
    fd.append("upfile", document.getElementById("upfile").files[]);
    ajax.open("post", "test.php", true);

    ajax.onload = function () {
        console.log(ajax.responseText);
    };

    ajax.send(fd);

}

/* jQuery 版 */
$('#upJQuery').on('click', function() {
    var fd = new FormData();
    fd.append("upload", );
    fd.append("upfile", $("#upfile").get().files[]);
    $.ajax({
        url: "test.php",
        type: "POST",
        processData: false,
        contentType: false,
        data: fd,
        success: function(d) {
            console.log(d);
        }
    });
});
</script>
</body>
</html>
           

繼續閱讀