jQuery上传多张图片带进度条样式(DEMO)

“jQuery上传多张图片带进度条样式(DEMO)”是一种基于jQuery的图片上传插件。它可以实现多张图片上传,并在上传过程中展示进度条样式。以下是使用该插件的完整攻略:

准备工作

在使用该插件之前需要先引入jQuery文件和插件文件。可以直接从官网下载插件文件,或者通过CDN加速,如下:

<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery.form/4.3.0/jquery.form.min.js"></script>

HTML代码

插件需要在HTML中构建表单上传文件,如下:

<form action="upload.php" method="post" enctype="multipart/form-data" id="uploadForm">
    <input type="file" name="images[]" multiple="multiple" id="uploadInput">
    <input type="submit" value="上传" id="uploadBtn">
</form>
<div id="progressBar"></div>

其中action属性为上传文件的处理地址;uploadInput属性为文件上传的表单项;multiple属性为启用多文件上传;uploadBtn为上传按钮;progressBar为进度条展示的容器。

JavaScript代码

初始化

在JavaScript中需要初始化该插件,如下:

$('#uploadForm').ajaxForm({
    beforeSend: function() {
        // 发送前的回调函数,一般用于表单验证
    },
    uploadProgress: function(event, position, total, percentComplete) {
        // 上传进度的回调函数
        var progressBar = $('#progressBar');
        progressBar.text(percentComplete + '%');
        progressBar.width(percentComplete + '%');
    },
    success: function(data) {
        // 上传成功的回调函数
        console.log(data);
    },
    complete: function(xhr) {
        // 上传完成的回调函数
    },
    error: function(xhr) {
        // 上传出错的回调函数
    }
});

其中ajaxForm方法是插件提供的一种初始化方法,用于以Ajax方式提交表单。在初始化的过程中可以传递多个回调函数:

  • beforeSend:在发送请求前调用的回调函数。
  • uploadProgress:在上传过程中调用的回调函数。
  • success:上传成功后调用的回调函数。
  • complete:上传完成后调用的回调函数。
  • error:上传失败时调用的回调函数。

处理上传请求

在服务器端应该处理上传的请求,将文件保存在本地,一种示例性的服务器端PHP代码如下:

<?php
if ($_FILES['images']) {
    $files = $_FILES['images'];
    $count = count($files['name']);
    $result = array();
    for ($i = 0; $i < $count; $i++) {
        $tmp_path = $files['tmp_name'][$i];
        $name = $files['name'][$i];
        $new_name = md5(time() . $name) . '.' . pathinfo($name, PATHINFO_EXTENSION);
        $save_path = 'uploads/' . $new_name;
        move_uploaded_file($tmp_path, $save_path);
        array_push($result, $save_path);
    }
    echo json_encode($result);
}
?>

代码中使用move_uploaded_file将文件保存在当前目录的uploads文件夹里,并且将所有上传成功的文件返回给客户端。

示例说明

以下是两种示例说明:

示例1:取消上传

在上传的过程中,可以随时取消上传。为uploadBtn添加onclick事件,当点击上传按钮时,取消上传:

$('#uploadBtn').click(function() {
    var uploadForm = $('#uploadForm');
    var options = uploadForm.data('ajaxForm').options;
    options.data = {cancel: true};
    uploadForm.ajaxSubmit();
});

以上代码首先获取表单的上传插件选项options,并添加取消标识cancel。然后将表单提交给服务器。在服务器端可以检查是否出现了取消标识,如果出现就停止上传。

示例2:限制上传类型

在上传的过程中,可以限制上传文件的类型。在表单初始化过程中添加beforeSend回调函数,用于验证上传文件的类型:

beforeSend: function() {
    var inputFile = $('#uploadInput');
    var allowedTypes = ['image/jpeg', 'image/png', 'image/gif'];
    for (var i = 0; i < inputFile[0].files.length; i++) {
        var fileType = inputFile[0].files[i].type;
        if (allowedTypes.indexOf(fileType) === -1) {
            alert('只允许上传JPEG、PNG和GIF格式的图片!');
            return false;
        }
    }
},

以上代码首先获取上传文件的表单项,获取允许上传的文件类型数组allowedTypes,然后通过循环,检查所有上传的文件是否符合要求。如果不符合要求,则弹出一个警告对话框,阻止上传操作。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:jQuery上传多张图片带进度条样式(DEMO) - Python技术站

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

相关文章

  • jQuery常见动画效果实现介绍

    jQuery常见动画效果实现介绍 jQuery常见动画效果的实现非常常用,本文将介绍jQuery中常见的动画效果及其实现方法。 1. 常见动画效果 1.1. show() 和 hide() show() 和 hide()是最常用的两个动画效果,分别用于显示和隐藏一个元素。它们的语法非常简单: $(selector).show(); $(selector).h…

    jquery 2023年5月28日
    00
  • jQuery layui常用方法介绍

    下面我将为您介绍一下 jQuery、Layui 常用方法。 jQuery 常用方法 1. 选择器 jQuery 的选择器与 CSS 的选择器类似,可以通过标签、类、ID、属性等方式来选择元素。示例代码: // 选择 ID 为 "myDiv" 的元素 $("#myDiv") // 选择 class 为 "btn…

    jquery 2023年5月28日
    00
  • jQuery UI Spinner widget()方法

    以下是关于 jQuery UI Spinner widget() 方法的详细攻略: jQuery UI Spinner widget() 方法 widget() 方法返回 Spinner 的 jQuery 对象。您可以使用此方法来访问 Spinner 的方法和选项。 语法“`javascript $(selector).spinner(“widget”);…

    jquery 2023年5月11日
    00
  • jQWidgets jqxButton imgSrc属性

    jQWidgets jqxButton imgSrc属性详解 jQWidgets是一个基于jQuery的UI组件库,提供了丰富UI组件工具包。jqxButton是其中之一。本文将详细介绍jqxButton的imgSrc属性,包括定义、语法和示例。 imgSrc属性的定义 jqxButton的imgSrc属性用于设置按钮图像的URL。 imgSrc属性的语法 …

    jquery 2023年5月10日
    00
  • jQWidgets jqxGrid getselectedcells()方法

    以下是关于“jQWidgets jqxGrid getselectedcells()方法”的完整攻略,包含两个示例说明: 方法简介 jqxGrid 控件的 selectedcells 方法用于获取当前选中单元格的信息。该方法的语法如下: $("#jqxGrid").jqxGrid(‘getselectedcells’); 在上述语法中,#…

    jquery 2023年5月10日
    00
  • jQWidgets jqxPopover宽度属性

    以下是关于 jQWidgets jqxPopover 组件中宽度属性的详细攻略。 jQWidgets jqxPopover 宽度属性 jQWidgets jqxPopover 组件的宽度属性用于设置弹出框宽度。 语法 $(‘#popover’).jqxPopover({ width: 300 }); 参数 width:一个数字,表示弹出框的宽度。 示例 以下…

    jquery 2023年5月12日
    00
  • jQuery :only-child选择器

    以下是关于jQuery :only-child选择器的完整攻略: 什么是:only-child选择器? :only-child选择器是jQuery中一种伪类选择器,用于选择同一父元素下仅有一个子元素的元素。 如何使用:only-child选择器? 可以使用以下代码来选择同一父元素下仅有一个子元素的元素: $("element:only-child&…

    jquery 2023年5月12日
    00
  • 百度前台js笔试题与答案

    百度前台JS笔试题攻略 0. 背景介绍 该题是百度前端技术学院(IFE)啊2017年的提前批笔试题,主要考察前端JavaScript编程能力。该题面分为多个部分,主要要求在限制条件下,用JavaScript实现代码功能。 1. 题目分析 1.1 题目描述 该题面共分为5个部分,包括字符串、数组、对象、ES6、正则表达式等内容。 1.2 题目要求 针对每个部分…

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