jQuery是一種JavaScript庫,與JSP、ASP和PHP等服務(wù)器端腳本語言結(jié)合使用時(shí)非常實(shí)用。通過將PHP與jQuery相結(jié)合,可以輕松地實(shí)現(xiàn)文件上傳操作。本文將介紹如何使用jQuery上傳PHP文件并顯示進(jìn)度條。
首先,需要使用HTML表單來實(shí)現(xiàn)文件上傳功能:
<form method="post" enctype="multipart/form-data" id="upload-form"> <input type="file" name="file" id="file"> <input type="button" value="上傳" id="upload-btn"> </form>
上述代碼中,需要使用enctype屬性將表單的Content-Type設(shè)置為multipart/form-data,確保可以上傳文件。此外,還需要添加一個(gè)按鈕來觸發(fā)上傳操作。
接下來,在JavaScript中使用jQuery來實(shí)現(xiàn)文件上傳操作:
<script> $(function() { $('#upload-btn').click(function() { var file_data = $('#file').prop('files')[0]; var form_data = new FormData(); form_data.append('file', file_data); $('#progress-bar').css('width', '0%'); $.ajax({ url: 'upload.php', type: 'POST', data: form_data, contentType: false, processData: false, xhr: function() { var xhr = $.ajaxSettings.xhr(); xhr.upload.onprogress = function(e) { if (e.lengthComputable) { var percent = Math.floor((e.loaded / e.total) * 100); $('#progress-bar').css('width', percent + '%'); } }; return xhr; }, success: function(data) { alert(data); } }); }); }); </script>
上述代碼中,使用了jQuery的ajax()方法來實(shí)現(xiàn)文件上傳。在上傳之前,需要將文件數(shù)據(jù)以FormData的形式作為POST請求的數(shù)據(jù)發(fā)送。同時(shí),需要設(shè)置contentType和processData為false,以確保不對數(shù)據(jù)進(jìn)行序列化處理。
此外,在xhr屬性中,需要對文件上傳進(jìn)度進(jìn)行處理。通過監(jiān)聽upload事件并計(jì)算文件上傳的百分比,可以實(shí)現(xiàn)進(jìn)度條的動(dòng)態(tài)顯示。
最后,在PHP文件中接收并處理上傳的文件:
<?php if ($_FILES['file']['error'] >0) { die('上傳出現(xiàn)錯(cuò)誤'); } else { move_uploaded_file($_FILES['file']['tmp_name'], 'uploads/' . $_FILES['file']['name']); echo '上傳成功'; } ?>
上述代碼中,首先判斷是否有錯(cuò)誤發(fā)生。如果是,直接輸出錯(cuò)誤信息并終止程序。否則,將上傳文件的臨時(shí)文件名和新的文件名作為參數(shù)調(diào)用move_uploaded_file()函數(shù),將文件移動(dòng)到指定目錄中。最后,輸出上傳成功的消息。
結(jié)論:
通過上述步驟,使用jQuery上傳PHP文件并顯示進(jìn)度條變得非常簡單。需要注意的是,在實(shí)際應(yīng)用中,還需要對上傳文件的類型、大小等進(jìn)行驗(yàn)證,以確保安全性。