当前位置:首页 > jquery

jquery文件上传

2026-01-14 16:30:33jquery

jQuery 文件上传实现方法

基础文件上传实现

使用 jQuery 结合 HTML5 的 FormData 对象可以实现异步文件上传。创建一个包含文件输入的表单:

<form id="uploadForm" enctype="multipart/form-data">
    <input type="file" name="file" id="fileInput">
    <button type="submit">上传</button>
</form>

jQuery 代码处理表单提交:

$('#uploadForm').submit(function(e) {
    e.preventDefault();
    var formData = new FormData(this);

    $.ajax({
        url: 'upload.php',
        type: 'POST',
        data: formData,
        processData: false,
        contentType: false,
        success: function(response) {
            console.log('上传成功', response);
        },
        error: function(xhr, status, error) {
            console.error('上传失败', error);
        }
    });
});

多文件上传实现

允许选择多个文件并一次性上传:

<input type="file" name="files[]" id="fileInput" multiple>

修改 jQuery 代码处理多文件:

var formData = new FormData();
var files = $('#fileInput')[0].files;

for (var i = 0; i < files.length; i++) {
    formData.append('files[]', files[i]);
}

进度条显示

使用 xhr 对象显示上传进度:

$.ajax({
    xhr: function() {
        var xhr = new window.XMLHttpRequest();
        xhr.upload.addEventListener('progress', function(e) {
            if (e.lengthComputable) {
                var percent = Math.round((e.loaded / e.total) * 100);
                $('#progressBar').css('width', percent + '%');
            }
        }, false);
        return xhr;
    }
});

文件验证

在上传前验证文件类型和大小:

var file = $('#fileInput')[0].files[0];
var validTypes = ['image/jpeg', 'image/png'];
var maxSize = 2 * 1024 * 1024; // 2MB

if ($.inArray(file.type, validTypes) < 0) {
    alert('不支持的文件类型');
    return false;
}

if (file.size > maxSize) {
    alert('文件大小超过限制');
    return false;
}

使用 jQuery 文件上传插件

对于更复杂的需求,可以使用专门的 jQuery 文件上传插件如 jQuery File Upload:

  1. 引入插件文件:

    <script src="js/vendor/jquery.ui.widget.js"></script>
    <script src="js/jquery.iframe-transport.js"></script>
    <script src="js/jquery.fileupload.js"></script>
  2. 基本配置:

    $('#fileInput').fileupload({
     url: 'upload.php',
     dataType: 'json',
     done: function(e, data) {
         $.each(data.result.files, function(index, file) {
             $('<p/>').text(file.name + ' 上传成功').appendTo('#files');
         });
     }
    });

服务器端处理示例(PHP)

$targetDir = "uploads/";
$targetFile = $targetDir . basename($_FILES["file"]["name"]);

if (move_uploaded_file($_FILES["file"]["tmp_name"], $targetFile)) {
    echo json_encode(['status' => 'success', 'file' => $targetFile]);
} else {
    echo json_encode(['status' => 'error']);
}

jquery文件上传

分享给朋友:

相关文章

jquery实现vue

jquery实现vue

jQuery 和 Vue.js 是两种不同理念的前端工具,jQuery 以 DOM 操作和事件驱动为核心,而 Vue.js 是数据驱动的现代化框架。如果想用 jQuery 实现类似 Vue 的功能(如…

jquery 之家

jquery 之家

jQuery 之家是一个专注于 jQuery 相关资源的中文网站,提供插件、教程、代码示例等内容。以下是相关信息整理: jQuery 之家网站内容 该网站通常包含以下资源: jQuery…

jquery.js

jquery.js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,用于简化 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它的设计宗旨是“Write Less, Do Mor…

jquery库

jquery库

jQuery 库简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画和 Ajax 交互。其核心特点是“Write Less, Do More”,…

jquery 面试题

jquery 面试题

以下是一些常见的 jQuery 面试题及其解答,涵盖基础概念、核心方法和实际应用场景。 jQuery 基础概念 jQuery 是什么? jQuery 是一个轻量级的 JavaScript 库,简化了…

jquery最新版本

jquery最新版本

jQuery 最新版本 jQuery 是一个广泛使用的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画和 Ajax 交互。以下是关于其最新版本的信息: 当前稳定版本 jQuer…