使用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。

阅读剩余 74%

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

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

相关文章

  • MyBatis实现配置加载的步骤

    MyBatis是一个开源的持久化框架,支持定制化SQL、存储过程和高级映射。在使用MyBatis时,需要进行配置文件的加载,本文将详细讲解MyBatis实现配置加载的步骤,包括以下内容: MyBatis配置文件的结构和内容 MyBatis配置文件的加载方式和过程 MyBatis的配置文件示例 1. MyBatis配置文件的结构和内容 MyBatis的配置文件…

    Java 2023年5月20日
    00
  • Java中保留两位小数的四种方法实现实例

    以下是Java中保留两位小数的四种方法实现实例的详细讲解攻略: 方法一:使用DecimalFormat类 可以使用Java的DecimalFormat类直接实现保留小数的操作。具体代码如下: double num = 3.141592653589793238; // 原始数据 DecimalFormat df = new DecimalFormat(&quo…

    Java 2023年5月26日
    00
  • java Disruptor构建高性能内存队列使用详解

    Java Disruptor构建高性能内存队列使用详解 Java Disruptor是一个Java内存队列(Memory Queue)框架,其可以高效地实现并发数据交换,以及与其他多线程系统的数据交换。在高性能计算、高并发、大吞吐量等场景下能够发挥出非常好的性能。本文将详细介绍如何使用Java Disruptor构建高性能内存队列。 原理介绍 Disrupt…

    Java 2023年5月27日
    00
  • Java 逻辑控制详解分析

    Java 逻辑控制详解分析 概述 逻辑控制是程序设计中最基本的概念之一,它能够控制程序的流程、分支、循环等,以达到特定的目的。在 Java 编程语言中,逻辑控制主要包括条件语句、循环语句、跳转语句等。本文将从这三个方面详细介绍 Java 逻辑控制的使用方法。 条件语句 条件语句主要包括 if 和 switch 两种语句,它们都是通过判断条件来决定程序的执行流…

    Java 2023年5月23日
    00
  • java8学习教程之lambda表达式的使用方法

    Java 8 学习教程之Lambda表达式的使用方法 Lambda表达式是什么? Lambda表达式是Java 8中的一个新特性,它允许我们以一种更简洁的方式来定义匿名内部类。通过使用Lambda表达式,我们可以在一行代码中定义函数接口的实现,并且可以直接将Lambda表达式传递给接口方法。 Lambda表达式的语法 Lambda表达式的语法非常简单,它有以…

    Java 2023年5月26日
    00
  • struts2实现文件上传显示进度条效果

    下面是我为你准备的“Struts2实现文件上传显示进度条效果”的完整攻略,希望它对你有所帮助。此攻略分为以下三个部分: 基本原理 操作步骤 示例代码 1. 基本原理 Struts2本身并不支持实现文件上传的进度条效果,但是可以通过使用第三方插件和Ajax来实现。具体的实现原理如下: 在前端页面中使用Ajax发送文件上传请求 在后端使用Struts2实现文件的…

    Java 2023年5月20日
    00
  • java的继承原理与实现方法详解

    让我们先从继承的概念入手。继承(Inheritance)是一种面向对象的编程技术,它允许某个类(子类)去继承它的另一个类(父类)的属性和方法。这个技术可以减少重复性代码,提高代码复用性和可维护性。在 Java 中,子类通过关键字 extends 来继承父类。 继承原理 Java 使用类的继承机制来实现继承。在 Java 中,一个类可以通过关键字 extend…

    Java 2023年5月18日
    00
  • java实现即时通信的完整步骤分享

    下面我将为大家详细讲解Java实现即时通信的步骤及示例: 步骤一:选择通信协议 实现即时通信的第一步是选择合适的通信协议,常用的通信协议有TCP、UDP和HTTP等。其中TCP协议是面向连接的、可靠的协议,适用于保证数据可靠传输的场景;UDP协议是无连接的、不可靠的协议,适用于实时性要求较高的场景;HTTP协议是应用最为广泛的协议,适用于数据传输量较大、要求…

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