ajaxFileupload实现多文件上传功能

yizhihongxing

下面我会为你讲解一下如何使用ajaxFileupload实现多文件上传功能,包含两个示例。

什么是ajaxFileupload?

ajaxFileupload 是基于jQuery 的一个文件上传插件,支持异步上传文件,将文件上传到服务器的同时还支持在当前页面显示文件上传的进度。

实现步骤

以下是实现ajaxFileupload上传文件功能的步骤:

1. 引入必要的文件

首先要把必要的文件引入,主要就是jquery和ajaxfileupload.js:

<script src="//cdn.bootcss.com/jquery/3.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-ajaxfileupload/3.0.1/ajaxfileupload.js"></script>

2. 编写上传文件的表单

在html中加入一个表单,表单中包含一个选择文件的input和一个上传按钮:

<form id="uploadForm" method="post" enctype="multipart/form-data">
    <input type="file" name="file" multiple>
    <button type="button" id="uploadBtn">上传</button>
</form>

需要注意的是,这里需要设置input的multiple属性,才能实现多文件上传。

3. 使用ajaxFileupload发送上传请求

在上传按钮的点击事件中使用ajax上传文件,同时可以加入一些参数,比如上传成功之后的回调函数:

$("#uploadBtn").click(function() {
    // 需要上传的文件input
    var fileInput = $("input[name='file']");
    // 文件数据
    var fileData = fileInput[0].files;
    // 上传地址
    var uploadUrl = "/upload.php"; 
    // 自定义数据
    var extraData = {
        somekey: "somevalue",
        otherkey: "othervalue"
    };
    // 开始上传
    $.ajaxFileUpload({
        url: uploadUrl, //上传地址
        secureuri: false, 
        fileElementId: fileInput.attr("name"),//文件数据的变量名
        dataType: 'json',//返回值类型 一般设置为json
        data: extraData,//自定义参数
        success: function (data, status) {
            //上传成功的回调函数
        },
        error: function (data, status, e) {
            //上传失败的回调函数
        }
    });
});

这里需要注意的是,fileElementId一定要设置为文件选择input的name属性,dataType一定要设置为json,因为ajaxfileupload上传之后返回的结果数据类型是json。

4. 接收上传文件并保存到服务器

最后根据自己的实际情况在服务器端接收上传的文件,并且将上传成功之后的结果返回给前端页面。

示例1:上传文件到服务器

下面是一个上传文件到服务器的示例,上传页面代码如下:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>ajaxFileupload上传文件到服务器</title>
    <script src="//cdn.bootcss.com/jquery/3.1.1/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-ajaxfileupload/3.0.1/ajaxfileupload.js"></script>
</head>
<body>
    <form id="uploadForm" method="post" enctype="multipart/form-data">
        <input type="file" name="file" multiple>
        <button type="button" id="uploadBtn">上传</button>
    </form>
    <br />
    <div id="result"></div>
    <script>
        $("#uploadBtn").click(function() {
            // 需要上传的文件input
            var fileInput = $("input[name='file']");
            // 文件数据
            var fileData = fileInput[0].files;
            // 上传地址
            var uploadUrl = "/upload.php"; 
            // 开始上传
            $.ajaxFileUpload({
                url: uploadUrl, //上传地址
                secureuri: false, 
                fileElementId: fileInput.attr("name"),//文件数据的变量名
                dataType: 'json',//返回值类型 一般设置为json
                success: function (data, status) {
                    $("#result").html(data.message);
                },
                error: function (data, status, e) {
                    $("#result").html(e);
                }
            });
        });
    </script>
</body>
</html>

这里的上传地址是/upload.php,接收上传文件的php代码如下:

<?php
$uploadFile = $_FILES['file'];
$fileName = $uploadFile['name'];
$fileSize = $uploadFile['size'];
$fileType = $uploadFile['type'];
$error = $uploadFile['error'];
$tmpName = $uploadFile['tmp_name'];

if ($error) {
    $result = array('code' => -1, 'message' => '出错啦:' . $error);
} else {
    // 将文件移动到指定目录
    $moveResult = move_uploaded_file($tmpName, './uploads/' . $fileName);
    if ($moveResult) {
        $result = array('code' => 0, 'message' => '上传成功!');
    } else {
        $result = array('code' => -1, 'message' => '出错啦:无法移动文件。');
    }
}

echo json_encode($result);
?>

这里将上传的文件移动到了./uploads/目录下,上传成功之后会返回json格式的结果,页面上会显示上传的结果。

示例2:上传文件到七牛云存储

下面是一个上传文件到七牛云存储的示例,上传页面代码如下:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>ajaxFileupload上传文件到七牛云存储</title>
    <script src="//cdn.bootcss.com/jquery/3.1.1/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-ajaxfileupload/3.0.1/ajaxfileupload.js"></script>
</head>
<body>
    <form id="uploadForm" method="post" enctype="multipart/form-data">
        <input type="file" name="file" multiple>
        <button type="button" id="uploadBtn">上传</button>
    </form>
    <br />
    <div id="result"></div>

    <script>
        $("#uploadBtn").click(function() {
            // 需要上传的文件input
            var fileInput = $("input[name='file']");
            // 文件数据
            var fileData = fileInput[0].files;
            // 上传地址
            var uploadUrl = "http://up.qiniu.com/"; 
            // 上传的文件名字,这里为了避免文件名重复使用时间戳
            var fileName = new Date().getTime().toString(36) + ".jpg";
            // 需要配置的:七牛上传凭证
            var token = "Your Token";
            // 需要配置的:七牛上传空间名
            var bucketName = "Your Bucket Name";

            // 开始上传
            $.ajaxFileUpload({
                type: 'post',
                url: uploadUrl, //上传地址
                secureuri: false, 
                fileElementId: fileInput.attr("name"),//文件数据的变量名
                dataType: 'json',//返回值类型 一般设置为json
                data: {
                    key: fileName, //上传的文件名字
                    token: token //七牛upload token
                },
                success: function (data, status) {
                    // 上传成功之后,将图片url返回并在页面显示
                    var qiniuUrl = "http://" + bucketName + ".qiniudn.com/" + fileName;
                    $("#result").html('<img src="' + qiniuUrl + '">');
                },
                error: function (data, status, e) {
                    $("#result").html(e);
                }
            });
        });
    </script>
</body>
</html>

这里使用ajaxFileupload上传文件到七牛云存储,需要在上传参数中加入几个必要的参数,比如:

  • 上传地址要使用七牛云存储的上传地址:http://up.qiniu.com/
  • 文件名字要用时间戳保证不会重复
  • 配置七牛云存储的upload token和bucket name

上传成功之后,可以通过拼接七牛云存储的图片url来显示上传的图片。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:ajaxFileupload实现多文件上传功能 - Python技术站

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

相关文章

  • java 实现局域网文件传输的实例

    下面是 “Java实现局域网文件传输的实例” 的完整攻略: 1. 确定文件传输协议 Java实现局域网文件传输,首先需要确定文件传输所采用的协议。常用的有TCP、UDP和HTTP等协议。 在这里我们采用TCP协议,因为TCP协议是可靠的传输协议,可以确保数据传输的正确性和完整性。 2. 客户端编写 客户端需要完成以下步骤:1. 创建Socket对象,指定服务…

    Java 2023年5月19日
    00
  • java中用String.Join美化代码的实例讲解

    让我来详细讲解“Java中用String.Join美化代码的实例讲解”的完整攻略。 什么是String.Join? String.Join是Java中的一个静态方法,用于将多个字符串或字符串数组连接成一个字符串。它的语法如下: public static String join(CharSequence delimiter, CharSequence… …

    Java 2023年5月27日
    00
  • 如何判断redis慢了

    来自 https://mp.weixin.qq.com/s?__biz=MzIzOTU0NTQ0MA==&mid=2247532967&idx=1&sn=19790c981aa33502aa1e3a8abe9cd064&chksm=e92a7ca8de5df5befc6cc534cbabdb847eff41d0b7cef373…

    Java 2023年4月28日
    00
  • 如何在Java中创建线程通信的四种方式你知道吗

    当多个线程共同操作同一个对象时,可能会遇到竞争态况或阻塞,需要使用线程通信来实现协调和同步,以确保程序的正确性和效率。在Java中,创建线程通信的方式有以下四种: 一、wait()和notify() wait()和notify()是Java中最基本的线程通信方式。wait()的作用是使当前线程挂起,直到另一个线程调用相同对象的notify()方法唤醒它。no…

    Java 2023年5月18日
    00
  • IDEA Java win10环境配置的图文教程

    让我详细讲解如何配置 IDEA Java 环境。 环境准备 首先需要准备以下两个软件:1. JDK,可前往 Oracle 官网下载对应版本;2. IDEA,可前往官网下载最新版本。 安装JDK 下载对应版本的JDK,并进行安装; 配置 JDK 环境变量,以 Windows 10 为例,具体步骤如下: 搜索“环境变量”并进入系统属性 -> 高级 -&gt…

    Java 2023年5月19日
    00
  • java实现服务器文件打包zip并下载的示例(边打包边下载)

    让我详细讲解“Java实现服务器文件打包zip并下载的示例(边打包边下载)”的完整攻略。 1. 准备工作 在开始操作之前,需要准备以下两件事情: 相应的Java开发环境; 一个Web服务器,如Tomcat。 2. 解压文件并创建Java项目 首先,需要从服务器中解压需要打包的文件。接下来,在Java项目中创建以下文件夹: src/main/java src/…

    Java 2023年5月19日
    00
  • JavaScript实现重置表单(reset)的方法

    当我们需要在表单中实现重置功能时,可以通过JavaScript编写代码来实现。下面是JavaScript实现重置表单的方法的攻略: 1. 通过form元素的reset()方法实现 在JavaScript中,表单元素的reset()方法可以用来重置表单,将所有表单元素的值设置为默认值。示例代码如下: document.getElementById("…

    Java 2023年6月15日
    00
  • java实现Xml与json之间的相互转换操作示例

    Java实现XML与JSON之间的相互转换操作示例攻略 什么是XML和JSON? XML是一种标记语言,可以用来存储数据,比如RSS或Atom的新闻源、在线计算机配置文件等等。XML文件结构清晰、可读性强,被广泛应用于Web Services、SOAP和其他Web API的数据传输格式。 JSON是一种轻量级的数据交换格式,它具有自我描述性、可读性高、易于理…

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