jQuery+ajax简单实现文件上传的方法

下面是“jQuery+ajax简单实现文件上传的方法”的完整攻略:

一、准备工作

1. 引入jQuery

首先需要引入jQuery库,可以在head标签中通过以下方式引入:

<script src="https://cdn.staticfile.org/jquery/3.6.0/jquery.min.js"></script>

2. 编写HTML代码

在HTML页面中,需要加入一个表单和一个用于显示进度的元素:

<form id="upload-form" enctype="multipart/form-data">
    <input type="file" name="file" id="upload-file">
    <button type="submit">上传文件</button>
</form>
<div id="upload-progress"></div>

二、jQuery+ajax实现文件上传

1. 监听表单提交事件

使用jQuery的submit()方法监听表单提交事件,当用户点击上传按钮时,会触发该事件。

$(function() {
    $('#upload-form').submit(function(event) {
        event.preventDefault(); // 阻止默认表单提交行为
        // 稍后编写 ajax 上传代码
    });
});

2. 编写ajax上传代码

调用jQuery的ajax()方法进行文件上传,配置如下:

$.ajax({
    url: 'upload.php', // 处理上传的服务器端程序
    type: 'POST', // 数据提交方式
    data: formData, // 表单数据
    xhr: function() { // XMLHttpRequest对象
        var xhr = $.ajaxSettings.xhr();
        xhr.upload.onprogress = function(event) { // 上传进度
            // 稍后编写上传进度条更新代码
        };
        return xhr;
    },
    success: function(data) { // 成功上传后回调函数
        alert('上传成功!');
        // 稍后编写上传成功后的代码
    },
    error: function(xhr) { // 上传失败后回调函数
        alert('上传失败!');
    },
    processData: false,
    contentType: false
});

由于是文件上传,所以配置中需将processData和contentType参数均设置为false,同时使用FormData对象作为表单数据,这样才能将文件上传到服务器端。

3. 实现上传进度的更新

监听XMLHttpRequest对象(即xhr对象)的upload事件,该事件会返回一个event对象,其中有一个loaded属性表示已经上传的字节数,而total属性表示总字节数。可通过这两个属性计算上传进度的百分比以及实时更新显示进度条的界面。

xhr.upload.onprogress = function(event) {
    var percent = event.loaded / event.total * 100; // 计算上传进度百分比
    $('#upload-progress').html(percent.toFixed(2) + '%'); // 更新进度条
};

4. 完整示例

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>文件上传</title>
    <script src="https://cdn.staticfile.org/jquery/3.6.0/jquery.min.js"></script>
</head>
<body>
    <form id="upload-form" enctype="multipart/form-data">
        <input type="file" name="file" id="upload-file">
        <button type="submit">上传文件</button>
    </form>
    <div id="upload-progress"></div>
    <script>
        $(function() {
            $('#upload-form').submit(function(event) {
                event.preventDefault();
                var formData = new FormData(this); // 获取表单数据
                $.ajax({
                    url: 'upload.php',
                    type: 'POST',
                    data: formData,
                    xhr: function() {
                        var xhr = $.ajaxSettings.xhr();
                        xhr.upload.onprogress = function(event) {
                            var percent = event.loaded / event.total * 100;
                            $('#upload-progress').html(percent.toFixed(2) + '%');
                        };
                        return xhr;
                    },
                    success: function(data) {
                        alert('上传成功!');
                        // 稍后编写上传成功后的代码
                    },
                    error: function(xhr) {
                        alert('上传失败!');
                    },
                    processData: false,
                    contentType: false
                });
            });
        });
    </script>
</body>
</html>

三、示例说明

下面提供2个简单的示例说明:

示例1:上传图片

HTML代码:

<form id="upload-form" enctype="multipart/form-data">
    <input type="file" name="file" id="upload-file">
    <button type="submit">上传图片</button>
</form>
<div id="upload-progress"></div>
<img id="show-img" src="">

JavaScript代码:

$(function() {
    $('#upload-form').submit(function(event) {
        event.preventDefault();
        var formData = new FormData(this);
        $.ajax({
            url: 'upload.php',
            type: 'POST',
            data: formData,
            xhr: function() {
                var xhr = $.ajaxSettings.xhr();
                xhr.upload.onprogress = function(event) {
                    var percent = event.loaded / event.total * 100;
                    $('#upload-progress').html(percent.toFixed(2) + '%');
                };
                return xhr;
            },
            success: function(data) {
                alert('上传成功!');
                $('#show-img').attr('src', data); // 显示上传的图片
            },
            error: function(xhr) {
                alert('上传失败!');
            },
            processData: false,
            contentType: false
        });
    });
});

upload.php文件:

<?php
if ($_FILES['file']['error'] > 0) {
    echo '上传失败';
} else {
    $temp = $_FILES['file']['tmp_name'];
    $path = date('YmdHis') . '-' . $_FILES['file']['name'];
    move_uploaded_file($temp, $path);
    echo $path; // 返回图片路径
}
?>

示例2:上传视频并播放

HTML代码:

<form id="upload-form" enctype="multipart/form-data">
    <input type="file" name="file" id="upload-file">
    <button type="submit">上传视频</button>
</form>
<div id="upload-progress"></div>
<video id="show-video" width="500" height="400" controls></video>

JavaScript代码:

$(function() {
    $('#upload-form').submit(function(event) {
        event.preventDefault();
        var formData = new FormData(this);
        $.ajax({
            url: 'upload.php',
            type: 'POST',
            data: formData,
            xhr: function() {
                var xhr = $.ajaxSettings.xhr();
                xhr.upload.onprogress = function(event) {
                    var percent = event.loaded / event.total * 100;
                    $('#upload-progress').html(percent.toFixed(2) + '%');
                };
                return xhr;
            },
            success: function(data) {
                alert('上传成功!');
                $('#show-video').attr('src', data); // 播放上传的视频
            },
            error: function(xhr) {
                alert('上传失败!');
            },
            processData: false,
            contentType: false
        });
    });
});

upload.php文件:

<?php
if ($_FILES['file']['error'] > 0) {
    echo '上传失败';
} else {
    $temp = $_FILES['file']['tmp_name'];
    $path = date('YmdHis') . '-' . $_FILES['file']['name'];
    move_uploaded_file($temp, $path);
    echo $path; // 返回视频路径
}
?>

以上是“jQuery+ajax简单实现文件上传的方法”的完整攻略,希望能对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:jQuery+ajax简单实现文件上传的方法 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • 如何使用jQuery来搜索和替换HTML元素

    以下是关于如何使用jQuery来搜索和替换HTML元素的完整攻略: 如何使用jQuery来搜索HTML元素? 可以使用以下代码来搜索HTML元素: $("selector") 在这个代码中,selector是指要搜索的元素,可以是标签名、类名、ID等。 示例1:搜索所有的段落元素并添加样式 $("p").css(&qu…

    jquery 2023年5月12日
    00
  • JS常见DOM节点操作示例【创建 ,插入,删除,复制,查找】

    下面是“JS常见DOM节点操作示例【创建 ,插入,删除,复制,查找】”的完整攻略。 创建DOM节点 要创建DOM节点,我们可以使用 document.createElement() 方法。这个方法接受一个参数,表示要创建的节点的标签名。例如,要创建一个 <div> 节点,我们可以这样写: const div = document.createEl…

    jquery 2023年5月27日
    00
  • jQWidgets jqxKanban源属性

    jQWidgets jqxKanban源属性详解 jQWidgets jqxKanban 是一种看板控件,用于在 Web 应用程序中创建看板。source 属性是 jqxKanban 控件的一个属性,用于指定看板的数据源。本文将详细讲解 source 属性的使用方法,并提供两个示例说明。 属性 source 属性用于指定看板的数据源。该属性接受一个数据适配器…

    jquery 2023年5月10日
    00
  • JQuery实现的图文自动轮播效果插件

    下面我为你讲解JQuery实现的图文自动轮播效果插件的完整攻略。 1. 概述 Jquery实现的图文自动轮播效果插件,主要实现的功能是自动轮播多个图片和文字。 2. 安装和调用 首先,你需要将Jquery库引入你的页面中。然后,你可以下载本插件,将其js文件引入你的页面,并且在页面中调用相应的方法即可。 3. 使用方法 使用该插件非常简单,只需要在页面中设置…

    jquery 2023年5月28日
    00
  • jQuery 常用特效实例小结【显示与隐藏、淡入淡出、滑动、动画等】

    jQuery 常用特效实例小结【显示与隐藏、淡入淡出、滑动、动画等】 一、显示与隐藏 1. 显示元素 使用 show() 方法可以将元素显示出来,让元素从隐藏状态转变为显示状态。例如: $("#myDiv").show(); // 将 ID 为 myDiv 的元素显示出来 2. 隐藏元素 使用 hide() 方法可以将元素隐藏起来,让元素…

    jquery 2023年5月28日
    00
  • 利用JQuery和Servlet实现跨域提交请求示例分享

    让我来详细讲解一下“利用JQuery和Servlet实现跨域提交请求示例分享”的完整攻略。 什么是跨域? 在Web开发中,如果一个Web页面向其它的站点发起请求,浏览器会默认禁止这种行为。这个限制被称为“同源策略”,同源策略限制了一个站点加载另一个站点的资源。同源是指协议、域名、端口相同。跨域则是指协议、域名、端口有任何一个不同。 利用JQuery和Serv…

    jquery 2023年5月28日
    00
  • jQuery outerHeight()方法

    当网页上的元素需要获取其实际高度时,常常会用到 outerHeight() 方法。jQuery outerHeight() 方法可以获取元素的标准尺寸,包括内边距(padding)和边框(border),但不包括外边距(margin)的高度值。下面是具体使用步骤和示例说明: 步骤一:引入jQuery 在使用 outerHeight() 方法之前,需要先引入 …

    jquery 2023年5月12日
    00
  • ASP trim,ltrim,rtrim 去前后空格 函数

    ASP的trim、ltrim和rtrim函数是字符串处理函数,可以用于去除字符串两端(或某一端)的空格或指定的字符,并返回结果。 这三个函数的区别如下: trim函数会去除字符串两端(左右)的空格或指定字符; ltrim函数只会去除字符串左侧的空格或指定字符; rtrim函数只会去除字符串右侧的空格或指定字符。 以下是使用这三个函数的语法: Trim(str…

    jquery 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部