使用WebUploader实现上传文件功能(一)

使用WebUploader实现上传文件功能(一)是一篇介绍如何在网站中使用WebUploader插件来实现文件上传功能的文章。

以下是该文章的详细攻略:

1. 确认环境

在使用WebUploader之前,需要确认网站中是否已经引入了jQuery和WebUploader的JavaScript文件。如果没有引入,需要先在需要使用上传功能的页面中引入这些文件。

2. 创建容器

在页面中创建一个容器元素,用于显示上传文件列表和上传进度等信息。例如:

<div id="uploader">
    <div class="queueList">
        <div id="dndArea" class="placeholder">
            <div class="filePicker"></div>
            <p>或将文件拖到这里,单次最多可选300个文件</p>
        </div>
    </div>
    <div class="statusBar" style="display:none;">
        <div class="progress">
            <span class="text">0%</span>
            <span class="percentage"></span>
        </div><div class="info"></div>
        <div class="btns">
            <div class="filePicker2"></div><div class="uploadBtn">开始上传</div>
        </div>
    </div>
</div>

3. 创建WebUploader实例

在页面加载完成后,创建WebUploader实例,并初始化参数。例如:

<script type="text/javascript">
    var uploader = WebUploader.create({
        // 选完文件后,是否自动上传。
        auto: true,

        // swf文件路径
        swf: 'http://cdn.staticfile.org/webuploader/0.1.5/Uploader.swf',

        // 文件接收服务端。
        server: '/fileupload.php',

        // 选择文件的按钮容器,不指定则不创建按钮。
        pick: '#filePicker',

        // 只允许选择文件,可选。
        accept: {
            title: 'Files',
            extensions: 'pdf,doc,docx,xls,xlsx,ppt,pptx',
            mimeTypes: 'application/pdf,application/msword,application/vnd.ms-excel,application/vnd.ms-powerpoint'
        }
    });
</script>

其中,参数的含义如下:

  • auto:选完文件后,是否自动上传,默认为false。
  • swf:Uploader.swf文件所在的路径。
  • server:文件上传的服务器端地址。
  • pick:选择文件的按钮容器,可以是一个元素,也可以是一个CSS选择器。
  • accept:对上传文件的类型和大小进行限制。

4. 定义上传事件

定义上传开始、上传过程和上传结束等事件,以便在上传过程中更新上传进度和文件列表等信息。例如:

<script type="text/javascript">
    // 当有文件被添加进队列的时候
    uploader.on( 'fileQueued', function( file ) {
        var $li = $(
            '<div id="' + file.id + '" class="file-item thumbnail">' +
                '<img>' +
                '<div class="info">' + file.name + '</div>' +
            '</div>'
            ),
            $img = $li.find('img');

        // $list为容器jQuery实例
        $('#fileList').append( $li );

        // 创建缩略图
        uploader.makeThumb( file, function( error, src ) {
            if ( error ) {
                $img.replaceWith('<span>不能预览</span>');
                return;
            }

            $img.attr( 'src', src );
        }, 100, 100 );
    });

    // 文件上传过程中创建进度条实时显示。
    uploader.on( 'uploadProgress', function( file, percentage ) {
        var $li = $( '#'+file.id ),
            $percent = $li.find('.progress span');

        // 避免重复创建
        if ( !$percent.length ) {
            $percent = $('<p class="progress"><span></span></p>')
                    .appendTo( $li )
                    .find('span');
        }

        $percent.css( 'width', percentage * 100 + '%' );
    });

    // 文件上传成功,给item添加成功class,并移除上传按钮
    uploader.on( 'uploadSuccess', function( file ) {
        $( '#'+file.id ).addClass('upload-state-done');
    });

    // 文件上传失败,显示上传出错
    uploader.on( 'uploadError', function( file ) {
        $( '#'+file.id ).find('.text').text('上传出错');
    });
</script>

其中,上传事件的含义如下:

  • fileQueued:当有文件被添加进队列的时候触发。
  • uploadProgress:文件上传过程中创建进度条实时显示。
  • uploadSuccess:文件上传成功,给相应的文件添加上传成功的样式。
  • uploadError:文件上传失败,显示上传出错信息。

5. 示例说明

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

以下示例将文件上传到服务器端,以PHP为例。

<?php
    $targetDir = '/uploads/';
    $tempFile   = $_FILES['file']['tmp_name'];
    $targetFile = $targetDir . basename($_FILES['file']['name']);
    move_uploaded_file($tempFile, $targetFile);
?>

示例2:使用SDK将文件上传到阿里云OSS

以下示例使用阿里云OSS SDK将文件上传到阿里云OSS,并返回文件的访问URL。

<script type="text/javascript">
    var uploader = WebUploader.create({
        // ...

        // 文件接收服务端。
        server: '/fileupload.php',

        // ...

        // 文件上传成功,获取文件访问URL
        uploader.on( 'uploadSuccess', function( file, response ) {
            var filename = response.filename;

            OSS.urllib.request(filename, {
                    method: 'GET'
                }, function (err, response) {
                    if (err) {
                        console.log(err);
                        return;
                    }
                    console.log(response);
            });
        });

        // ...

    });
</script>

其中,filename是在上传成功后返回的OSS文件路径。通过OSS.urllib.request方法,获取该文件的访问URL。实际使用中,需要安装和配置好阿里云OSS SDK。

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

(0)
上一篇 2023年6月15日
下一篇 2023年6月15日

相关文章

  • Spring Security认证的完整流程记录

    下面我将详细讲解Spring Security认证的完整流程记录: 1. Spring Security是什么 Spring Security 是 Spring 提供的安全扩展框架,是一个框架组件,其目标是为基于 Spring 的应用程序提供声明性安全保护。 2. Spring Security 的认证流程 Spring Security 的认证流程可以概括…

    Java 2023年5月20日
    00
  • Java语法基础之循环结构语句详解

    Java语法基础之循环结构语句详解 简介 循环结构是编程语言中非常重要的一部分,可以让程序轻松地重复执行特定的任务,提高代码的复用性和效率。Java 语言支持多种循环结构语句,其中包括 for、while 和 do-while 三种类型。在本篇文章中,我们将详细介绍循环结构语句在 Java 语言中的应用。 for 循环 for 循环语句是 Java 语言中最…

    Java 2023年5月23日
    00
  • java 获取一组数据中的最大值和最小值

    Java 获取一组数据中的最大值和最小值 要想在Java中获取一组数据中的最大值和最小值,可以使用以下方法。 方法1:通过循环比较 定义一个变量 max,用于存放最大值,初始值为当前数组的第一个元素。 定义一个变量 min,用于存放最小值,初始值为当前数组的第一个元素。 使用循环遍历数组,对于每一个数组元素,分别与 max 和 min 进行比较,如果大于 m…

    Java 2023年5月26日
    00
  • JAVA/JSP学习系列之三(Resin+Apache的安装)

    下面是详细的JAVA/JSP学习系列之三(Resin+Apache的安装)攻略,包含了安装过程和示例代码。 Resin+Apache的安装 安装Resin 下载Resin压缩文件,可以在官网https://resin.caucho.com/下载,也可以在镜像网站上下载。 解压文件,将解压后的文件夹移动到/usr/local目录下。 tar -zxvf res…

    Java 2023年5月19日
    00
  • Spring Security整合Oauth2实现流程详解

    Spring Security整合Oauth2实现流程详解 前言 在Web开发过程中,安全始终是一个重要的话题。为了保护我们的应用程序免受黑客、欺诈和恶意攻击,我们需要使用安全框架来保护它。在这方面,Spring Security是一个强大的框架,提供了多种身份认证和授权方式。在此基础上,我们还可以使用Oauth2协议来进行安全访问控制。 本文将介绍如何使用…

    Java 2023年5月20日
    00
  • Java反射学习 getClass()函数应用

    Java反射是指在程序运行时动态地查找、加载、使用类和方法的能力。在Java反射中,getClass()函数是非常重要的一个函数。本文将为大家详细讲解Java反射学习中getClass()函数的应用。 什么是getClass()函数? 在Java语言中,所有的对象在运行时都拥有一个getClass()函数。这个函数可以用来获取当前对象的类型信息,返回值是Cl…

    Java 2023年5月26日
    00
  • 使用spring aop统一处理异常和打印日志方式

    使用Spring AOP是一种非常方便的方式,可以实现对异常和日志的统一处理。下面是使用Spring AOP实现统一处理异常和打印日志的完整攻略。 1. 异常处理 1.1 创建异常类 首先需要创建一个自定义异常类,例如: public class MyException extends RuntimeException { public MyExceptio…

    Java 2023年5月27日
    00
  • JDBC连接MYSQL分步详解

    JDBC连接MYSQL分步详解 JDBC是Java Database Connectivity的缩写,表示Java数据连接,是一种标准的Java API。JDBC提供了跨多种数据库管理系统的连接协议,能够让Java程序通过这套协议与数据库进行交互,从而实现对数据的增删改查操作。 本文将详细介绍如何使用JDBC连接MYSQL数据库,包括以下几个步骤: 下载安装…

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