简单 php结合WebUploader实现文件上传功能

2023-09-13 09:45:49

WebUploader 资源下载
http://fex.baidu.com/webuploader/download.html

WebUploader 使用方法
http://fex.baidu.com/webuploader/getting-started.html

php 上传代码

<?php
header('Content-type:text/html;charset=utf-8');
    if($_FILES['file']['error'] == 0){  // 判断上传是否正确
        $fileName = $_FILES['file']['name'];  // 获取文件名称
        $fileSize = $_FILES['file']['size'];  // 获取文件大小
        $tmp_name = $_FILES["file"]["tmp_name"]; // 获取上传文件默认临时地址
        $fileTypeInfo = ['doc','jpg','png','docx','xls','xlsx','log'];  // 定义允许上传文件类型【很多种只列举3种】
        $fileType = substr(strrchr($fileName,'.'),1); // 提取文件后缀名
        if(!in_array($fileType,$fileTypeInfo)){  // 判断该文件是否为允许上传的类型
            echo '上传失败,文件格式不正确';
            die();
        }
        if($fileSize /1024 > 10240){  // 规定文件上传大小【文件为Byte/1024 转为 kb】
            echo '上传失败,文件太大请上传小于1024Kb';
            die();
        }
        date_default_timezone_set('PRC'); // 定义时间戳
        if(!file_exists('D:/PHPsoftware/wamp64/www/stt/')){  // 判断是否存在存放上传文件的目录
                mkdir('D:/PHPsoftware/wamp64/www/stt/');  // 建立新的目录
        }else{
            $newFileName = $fileName;  // 命名新的文件名称
            if(move_uploaded_file($tmp_name,'D:/PHPsoftware/wamp64/www/stt/'.$newFileName)){  // 移动文件到指定目录
                echo ("‘../../PHPsoftware/wamp64/www/stt/cs’   上传成功");
            }
        }
    }else{
        echo "上传失败".$_FILES['file']['error'];  // 显示错误信息
    }

?>

html 页面代码

jquery下载地址(注意:使用webuploader 插件必须得jquery-1.11.1版本及以上才可以
http://code.jquery.com/jquery-1.11.1.min.js


<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
    <!--引入CSS-->
    <link rel="stylesheet" type="text/css" href="./assets/js/webuploader.css">
    <!--引入JS-->
    <script src="./assets/js/jquery-1.11.1.min.js"></script>
	<script src="./assets/js/webuploader.js"></script>
    <script type="text/javascript">
    $(function() {
        //开始上传按钮
        var $btn = $('#ctlBtn');
        //文件信息显示区域
        var $list = $('#thelist');
        //当前状态
        var state = 'pending';
        //初始化Web Uploader
        var uploader = WebUploader.create({
            // swf文件路径
            swf: './assets/js/Uploader.swf',
            // 文件接收服务端。
            server: 'upload.php',
            // 选择文件的按钮。可选。
            // 内部根据当前运行是创建,可能是input元素,也可能是flash.
            pick: '#picker',
            //设置文佳上传的类型格式
           accept: {  //不建议使用,使用时选择文件div失效
                title: 'file',
                extensions: 'xls,xlsx,word,doc,ppt,docx,rtf,ppt,txt,pptx,pdf',
                mimeTypes: '.xls,.xlsx,.word,.doc,.ppt,.docx,.rtf,.ppt,.txt,.pptx,.pdf'
            }
        });

        // 当有文件被添加进队列的时候(选择文件后调用)
        uploader.on( 'fileQueued', function( file ) {
            $list.append( '<div id="' + file.id + '" class="item">' +
                    '<h4 class="info">' + file.name + '</h4>' +
                    '<p class="state">等待上传...</p>' +
                    '</div>' );
        });

        // 文件上传过程中创建进度条实时显示。
        uploader.on( 'uploadProgress', function( file, percentage ) {
            var $li = $( '#'+file.id );
            $li.find('p.state').text('上传中(' + parseInt(percentage * 100) + '%)');
        });

        // 文件上传成功后会调用
        uploader.on( 'uploadSuccess', function( file ) {
            $( '#'+file.id ).find('p.state').text('已上传');
            savefilemanager("/vod/uploadfilemanager/"+file.name,file.name);
        });

        // 文件上传失败后会调用
        uploader.on( 'uploadError', function( file ) {
            $( '#'+file.id ).find('p.state').text('上传出错');
        });

        // 文件上传完毕后会调用(不管成功还是失败)
        uploader.on( 'uploadComplete', function( file ) {
            $( '#'+file.id ).find('.progress').fadeOut();
        });

        // all事件(所有的事件触发都会响应到)
        uploader.on( 'all', function( type ) {
            if ( type === 'startUpload' ) {
                state = 'uploading';
            } else if ( type === 'stopUpload' ) {
                state = 'paused';
            } else if ( type === 'uploadFinished' ) {
                state = 'done';
            }

            if ( state === 'uploading' ) {
                $btn.text('暂停上传');
            } else {
                $btn.text('开始上传');
            }
        });

        // 开始上传按钮点击事件响应
        $btn.on( 'click', function() {
            if ( state === 'uploading' ) {
                uploader.stop();
            } else {
                uploader.upload();
            }
        });
    });
</script>
<style>
    #picker {
        display: inline-block;
    }
    #ctlBtn {
        position: relative;
        display: inline-block;
        cursor: pointer;
        background: #EFEFEF;
        padding: 10px 15px;
        color: #2E2E2E;
        text-align: center;
        border-radius: 3px;
        overflow: hidden;
    }
    #ctlBtn:hover {
        background: #DDDDDD;
    }
	<style>
    .webuploader-container {
      position: relative;
    }
    .webuploader-element-invisible {
      position: absolute !important;
      clip: rect(1px 1px 1px 1px); /* IE6, IE7 */
      clip: rect(1px,1px,1px,1px);
    }
    .webuploader-pick {
      position: relative;
      display: inline-block;
      cursor: pointer;
      background: #00b7ee;
      padding: 10px 15px;
      color: #fff;
      text-align: center;
      border-radius: 3px;
      overflow: hidden;
    }
    .webuploader-pick-hover {
      background: #00a2d4;
    }

    .webuploader-pick-disable {
      opacity: 0.6;
      pointer-events:none;
    }
	#picker {
        display: inline-block;
    }
    #ctlBtn {
        position: relative;
        display: inline-block;
        cursor: pointer;
        background: #EFEFEF;
        padding: 10px 15px;
        color: #2E2E2E;
        text-align: center;
        border-radius: 3px;
        overflow: hidden;
    }
    #ctlBtn:hover {
        background: #DDDDDD;
    }
	#picker {
        display: inline-block;
      }
      #ctlBtn {
        position: relative;
        display: inline-block;
        cursor: pointer;
        background: #EFEFEF;
        padding: 10px 15px;
        color: #2E2E2E;
        text-align: center;
        border-radius: 3px;
        overflow: hidden;
      }
      #ctlBtn:hover {
        background: #DDDDDD;
      }
  </style>
  </head>
  <body>
    <div id="uploader" class="wu-example">
        <div class="btns">
            <div id="picker">选择文件</div>
            <div id="ctlBtn" class="webuploader-upload">开始上传</div>
        </div>
        <!--用来存放文件信息-->
        <div id="thelist" class="uploader-list"></div>
    </div>
  </body>
</html>

更多推荐

【DevOps核心理念基础】3. 敏捷开发最佳实践

一、敏捷开发最佳实践1.1项目管理1.2需求管理1.3技术架构1.4技术开发1.5测试二、敏捷开发最佳实践2.1敏捷开发的执行细节三、全面的DevOps工具链四、版本控制和协作开发工具4.1集中式版本控制工具4.2分布式版本控制工具一、敏捷开发最佳实践1.1项目管理迭代开发技术团队的人员素质,人员配备完整及时有效的沟通

解锁前端Vue3宝藏级资料 第五章 Vue 组件应用 2 ( Emit )

本章带领大家理解组件、props、emits、slots、providers/injects,Vue插件等Vue组件使用的基础知识。第一章Vue3项目创建1VueCLI创建vue项目第一章Vue3项目创建2使用Webpack5搭建vue项目第一章Vue3项目创建3Vite创建vue项目第二章Vue3基础语法指令第三章V

内存利用:迟来的blindless与逃不掉的exit漏洞

0x01前言在计算机安全领域,漏洞的危险性往往与其广泛性和潜在攻击方式密切相关。今天,我们将深入探讨一个异常危险的漏洞,它存在于程序退出时执行的常见函数"exit"中。无论是在操作系统还是应用程序中,"exit"都是一个普遍存在的函数,通常用于正常退出程序。但这种普遍性也使得它成为了潜在的攻击目标。这个漏洞的威胁性在于

华为云云耀云服务器L实例评测|使用docker部署禅道系统

大家好,我是早九晚十二,目前是做运维相关的工作。写博客是为了积累,希望大家一起进步!我的主页:早九晚十二文章目录前言准备工作华为云账号注册充值、购买服务器服务器操作密码修改登录远程工具禅道部署简介部署安装docker设置开机自启禅道镜像包获取查找并拉取镜像创建docker容器并启动开启防火墙入站策略浏览器访问IP:PO

【2023】Jenkins入门与安装

目录1.什么是Jenkins2.Jenkins安装部署3.配置Jenkins4.优化Jenkins5.插件管理5.1.联网安装5.2.hpi文件安装5.3.离线安装6.创建项目操作系统:centos7.9JAVA版本:java-11-openjdkJenkins版本:jenkins-2.401.11.什么是Jenkin

【C++】day6学习成果:继承、多态、栈和循环队列

1.将之前定义的栈类和队列类都实现成模板类栈:#include<iostream>#defineMAX8usingnamespacestd;template<typenameT>classStack{private:T*data;//栈的数组,指向堆区空间,用于存储栈的容器inttop;//记录栈顶的变量public:

潮力全开!泡泡玛特泰国首店盛大开业 限定单品点燃玩家热情

9月20日,泡泡玛特泰国首店盛大开业,吸引超千名粉丝现场排队,并在当地社交媒体引发热议。多家泰国主流媒体对此给予了关注和报道。该店坐落的尚泰世界购物中心(CentralWorld)位于泰国曼谷CBD商圈,是目前东南亚地区第二大购物中心,也是曼谷最大的百货购物中心。此前,泡泡玛特就宣布与全球最大的酒店、餐馆以及零售业集团

基于Java的设计模式-策略模式

策略模式就是定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。基本概念策略模式主要是解决多种算法相似的情况下,使用if...else所带来的复杂和难以维护。当存在系统中有多个类,但是区分它们的是只是它们的直接行为,那我们可以把这些封装成一个一个类,然后进行任意替换。策略模式存在三种角色:Strategy策略

PyCharm:No Python interpreter configured for the project

一、问题概述Your的Pycharm软件创建完项目后,结果无法运行,观察后,在Pycharm代码编辑区上面出现了这样的一个黄色条提示:NoPythoninterpreterconfiguredfortheproject【问题】在您的Python项目中无Python解释器,Pycharm只是一个python代码编辑器,而

LuatOS-SOC接口文档(air780E)--camera - codec - 多媒体-编解码

常量常量类型解释codec.MP3numberMP3格式codec.WAVnumberWAV格式codec.AMRnumberAMR-NB格式,一般意义上的AMRcodec.AMR_WBnumberAMR-WB格式codec.create(type,isDecoder)创建编解码用的codec参数传入值类型解释int多

ElasticSearch查询工具类分享

文章目录1.sql转ES工具2.KibanaVSPostman/ApiPost3.esjson转java4.ElasticSearch查询工具类esHelper5.在IDE控制台看到效果如图前言最近需要对ES数据进行分析和查询,之前因为在入门ES时没有好好做笔记和整理。1.sql转ES工具https://printlo

热文推荐