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

yizhihongxing

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

相关文章

  • scratch怎么上传源程序代码? scratch上传本地程序的技巧

    以下是详细的攻略: 如何上传源程序代码? 在Scratch网站中,用户可以通过将项目上传到服务器来保存项目和共享项目。在Scratch网站上完成的项目已经包含了所有程序的代码,但是如果用户想要上传本地的项目并分享他们的源代码,可以按照以下步骤: 在Scratch网站上登录账户并点击“上传”按钮。 在弹出的对话框中,单击“从文件上传”按钮。 寻找保存在本地计算…

    Java 2023年5月23日
    00
  • Maven导入依赖时爆红的几种解决方法

    当我们在Maven项目中导入依赖时,可能会遇到一些问题,例如依赖库的版本不兼容、缺少必需的依赖库等等,会导致IDE(例如Eclipse或IDEA)在pom.xml中将有关依赖项部分标记为红色。这时候需要我们采取一些方法进行解决。 解法一:更新或更改版本号 在Maven项目中,依赖项的版本是至关重要的。在遇到标记为红色的依赖项时,我们可以尝试通过更改或更新依赖…

    Java 2023年5月19日
    00
  • 使用SpringBoot配置https(SSL证书)

    使用 Spring Boot 配置 HTTPS (SSL 证书) 的完整攻略 在本文中,我们将详细介绍如何使用 Spring Boot 配置 HTTPS (SSL 证书)。我们将介绍 HTTPS 的概念、配置方式和提供两个示例。 HTTPS 概念 HTTPS (Hyper Text Transfer Protocol Secure) 是一种通过 SSL/TL…

    Java 2023年5月15日
    00
  • Java中关于Null的9个解释(Java Null详解)

    Java中的null是一个特殊值,表示一个对象引用或数组元素的未初始化的状态。它常被用于指示对象或数组值的缺失和空状态。 Java中关于null的9个解释如下: 1. null是Java关键字 \null是Java中的一个关键字,用于表示变量或表达式没有值或引用任何对象。可以将其分配给任何对象类型的引用变量或返回其中。例如: String s = null;…

    Java 2023年5月23日
    00
  • 通过spring用beanshell实现java接口示例

    通过Spring使用Beanshell实现Java接口的过程如下: 准备工作 首先,确保安装了Beanshell和Spring依赖项。在此过程中,我们将使用Gradle作为构建工具。在项目的build.gradle文件中添加以下代码,然后运行gradle build以加载所需的依赖项: dependencies { … compile ‘org.spri…

    Java 2023年6月15日
    00
  • Java数组操作经典例题大总结

    Java数组操作经典例题大总结 一、前言 数组是Java中最基础也是使用最广泛的一种数据结构。数组的使用场景很多,例如经典的冒泡排序算法、求最大值和最小值、元素去重等等。本篇文章将详细讲解Java数组操作的经典例题,并提供代码实现。 二、数组操作 1. 求最大值和最小值 求一个数组中的最大值和最小值是一个非常基础的操作。Java中提供了Arrays类,它可以…

    Java 2023年5月26日
    00
  • 详解Spring的核心机制依赖注入

    让我详细讲解一下“详解Spring的核心机制依赖注入”的攻略。 核心机制依赖注入介绍 依赖注入(DI),即 Inversion of Control,是 Spring 的核心机制之一。该机制的基本思想是:在对象实例化时不由它自身来控制和管理依赖关系的建立,而由外部容器来将其所依赖的资源注入到对象中。 依赖注入有三种方式:构造方法注入、Setter 方法注入和…

    Java 2023年6月15日
    00
  • 源码分析SpringMvc日志打印被忽略输出问题

    源码分析SpringMvc日志打印被忽略输出问题 在 Spring MVC 中,我们可以使用日志打印来记录应用程序的运行情况。但是,有时候我们会发现日志打印被忽略输出,本文将详细讲解这个问题的原因和解决方法,并提供两个示例说明。 1. 原因分析 在 Spring MVC 中,日志打印是通过 Log4j、Logback 或者其他日志框架来实现的。如果日志打印被…

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