JQuery是一個非常流行的Javascript庫,它可以幫助我們更便捷地操作DOM、處理事件、制作動畫、處理HTTP請求等。在表單處理方面,JQuery也提供了非常方便的解決方案。本文將介紹JQuery表單多圖片上傳的實現(xiàn)方法。
$(document).ready(function() {
var maxFilesize = 2; // 最大文件大小(以MB為單位)
var maxFiles = 5; // 最多上傳文件數(shù)
var fileTypes = ['jpg', 'jpeg', 'png', 'gif']; // 允許上傳的文件類型
var $inputField = $('#file'); // 文件上傳input標簽
var $preview = $('#preview'); // 預覽圖容器
var $dropArea = $('.drop-area'); // 拖拽上傳區(qū)域
var $status = $('#status'); // 上傳狀態(tài)信息容器
// 使用FormData對象上傳文件
var formData = new FormData();
$inputField.on('change', function(e) {
var files = e.target.files; // 上傳的文件列表
for (var i = 0; i < files.length; i++) {
// 驗證文件大小和類型是否符合要求
var file = files[i];
if (file.size > maxFilesize * 1024 * 1024 || fileTypes.indexOf(file.type.split('/')[1]) === -1) {
continue;
}
formData.append('file[]', file);
// 顯示預覽圖
var reader = new FileReader();
reader.onload = function(e) {
$preview.append('<img src="' + e.target.result + '" class="preview-image" />');
};
reader.readAsDataURL(file);
// 如果超過最多上傳文件數(shù),則隱藏上傳框
if ($preview.find('.preview-image').length >= maxFiles) {
$inputField.hide();
break;
}
}
uploadFiles();
});
// 拖拽上傳文件
$dropArea.on('dragover', function(e) {
e.preventDefault();
$(this).addClass('active');
}).on('dragleave', function(e) {
e.preventDefault();
$(this).removeClass('active');
}).on('drop', function(e) {
e.preventDefault();
$(this).removeClass('active');
$inputField.trigger('click');
});
// 上傳文件
function uploadFiles() {
$.ajax({
url: 'upload.php',
type: 'post',
data: formData,
contentType: false,
processData: false,
success: function(response) {
$status.text(response);
}
});
}
});
上述代碼實現(xiàn)了表單多圖片上傳功能,其中使用了JQuery的事件綁定、文件讀取、FormData對象、Ajax提交等功能。具體實現(xiàn)過程如下:
- 首先定義了一些上傳相關的設置,在 fileTypes 中定義了允許上傳的文件類型,maxFiles 中定義了最多上傳文件數(shù),maxFilesize 中定義了最大文件大小。
- 定義了 $inputField 變量表示上傳文件 input 標簽,通過 change 事件監(jiān)聽文件上傳事件,并在回調(diào)函數(shù)中使用 FormData 對象保存已上傳的文件。
- 同時在回調(diào)函數(shù)中,使用 FileReader 對象讀取文件并顯示預覽圖,當已上傳的文件數(shù)量超過最多上傳文件數(shù)時隱藏上傳框。
- 使用 $dropArea 通過 dragover、dragleave、drop 處理拖拽上傳文件的相關事件。
- 最后定義了一個上傳方法 uploadFiles,使用 Ajax 實現(xiàn)文件上傳,并在回調(diào)函數(shù)中顯示上傳狀態(tài)信息。
以上就是使用JQuery實現(xiàn)表單多圖片上傳的全部內(nèi)容,希望對大家有所幫助。