当前位置:首页 > jquery

jquery 文件上传

2026-04-07 23:05:58jquery

jQuery 文件上传实现方法

使用原生表单和 AJAX

创建一个包含文件输入的表单,通过 jQuery 监听提交事件并使用 AJAX 发送文件数据。

<form id="uploadForm" enctype="multipart/form-data">
    <input type="file" name="file" id="fileInput">
    <button type="submit">上传</button>
</form>
$('#uploadForm').on('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);
        }
    });
});

使用 jQuery File Upload 插件

jQuery File Upload 是一个功能强大的文件上传插件,支持多文件上传、拖放上传和进度显示。

安装插件:

npm install blueimp-file-upload

HTML 结构:

<input id="fileupload" type="file" name="files[]" multiple>
<div id="progress">
    <div class="bar" style="width: 0%;"></div>
</div>

JavaScript 代码:

$('#fileupload').fileupload({
    url: 'upload.php',
    dataType: 'json',
    done: function(e, data) {
        $.each(data.result.files, function(index, file) {
            $('<p/>').text(file.name + ' 上传成功').appendTo('body');
        });
    },
    progressall: function(e, data) {
        var progress = parseInt(data.loaded / data.total * 100, 10);
        $('#progress .bar').css('width', progress + '%');
    }
});

服务器端处理(PHP 示例)

创建一个简单的 PHP 脚本来处理上传的文件:

<?php
$targetDir = "uploads/";
$targetFile = $targetDir . basename($_FILES["file"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($targetFile, PATHINFO_EXTENSION));

// 检查文件是否已存在
if (file_exists($targetFile)) {
    echo "文件已存在";
    $uploadOk = 0;
}

// 检查文件大小(限制为 5MB)
if ($_FILES["file"]["size"] > 5000000) {
    echo "文件过大";
    $uploadOk = 0;
}

// 允许特定文件格式
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
    echo "只允许 JPG, JPEG, PNG & GIF 文件";
    $uploadOk = 0;
}

// 检查上传标志
if ($uploadOk == 0) {
    echo "文件未上传";
} else {
    if (move_uploaded_file($_FILES["file"]["tmp_name"], $targetFile)) {
        echo "文件 ". htmlspecialchars(basename($_FILES["file"]["name"])). " 上传成功";
    } else {
        echo "上传过程中发生错误";
    }
}
?>

注意事项

确保服务器上的上传目录具有写权限,通常设置为 755 或 777。

对于大文件上传,可能需要调整 PHP 配置:

  • upload_max_filesize
  • post_max_size
  • max_execution_time

添加文件类型验证可以增强安全性,防止上传恶意文件。

jquery 文件上传

考虑使用 CSRF 保护来防止跨站请求伪造攻击。

分享给朋友:

相关文章

jquery库

jquery库

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够…

jquery最新版本

jquery最新版本

jQuery 最新版本 截至2024年7月,jQuery 的最新稳定版本是 3.7.1,发布于2023年11月16日。 版本特性 3.x 系列:支持现代浏览器(IE 9+),移除了旧版API…

jquery和vue的区别

jquery和vue的区别

核心设计理念 jQuery是一个基于DOM操作的轻量级JavaScript库,主要用于简化HTML文档遍历、事件处理、动画设计等任务。它采用命令式编程风格,需要手动操作DOM元素。 Vue是一个渐进…

jquery滚动

jquery滚动

jQuery 滚动事件监听 使用 jQuery 监听滚动事件可以通过 scroll() 方法实现。以下代码会在窗口滚动时触发回调函数: $(window).scroll(function() {…

jquery表单

jquery表单

jQuery 表单操作 jQuery 提供了丰富的 API 用于表单操作,包括表单元素的选择、值获取与设置、事件处理等。 表单元素选择 使用 jQuery 选择器可以方便地选取表单元素: // 选…

jquery 隐藏

jquery 隐藏

jQuery 隐藏元素的方法 使用 jQuery 隐藏元素可以通过多种方式实现,以下是几种常见的方法: hide() 方法hide() 是最简单的隐藏元素方法,它会将元素的 display 属性设置…