FileUpload上传组件自定义模板(FineUploaderBasic)的使用

FileUpload FineUploaderBasic(自定义模板)配置

FileUpload 是国外一个纯javascript 写的大文件上传组件,该组件支持分片上传,断点续传,多文件,跨域等功能。

以下是配置代码:

前端配置:

<!--定义按钮-->
<div id="basic_uploader_fine"><i class="icon-upload icon-white"></i>选择文件</div>
<div id="triggerUpload">点击上传</div>
<!--显示信息-->
<div id="messages"></div>
<div id="cancelUpload" class="buttons">取消</div>
<div id="cancelAll" class="buttons">取消全部</div>
<div id="pauseUpload" class="buttons">暂停上传</div>
<div id="continueUpload" class="buttons">继续上传</div>
<script>
  $(document).ready(function() {
    $fub = $(‘#basic_uploader_fine‘);
    $messages = $(‘#messages‘);

    var uploader = new qq.FineUploaderBasic({
        debug: true,       // 开启调试模式
        multiple: true,    // 多文件上传
        button: $fub[0],   //上传按钮
        autoUpload: false, //不自动上传则调用uploadStoredFiless方法 手动上传
        // 验证上传文件
        validation: {
            allowedExtensions: [‘jpeg‘, ‘jpg‘, ‘png‘, ‘zip‘ , ‘rar‘],
        },
        //跨域配置
        cors: {
            expected: true,
            sendCredentials: true,
            allowXdr: true
        },
        // 远程请求地址(相对或者绝对地址)
        request: {
            endpoint: ‘server/endpoint.php‘
        },
        retry: {
           enableAuto: false // defaults to false 自动重试
        },
        chunking: {
            enabled: true,
            partSize: 500, // 分组大小,默认为 2M
            concurrent: {
                enabled: true // 开启并发分组上传,默认并发3个
            },
            success: {
                endpoint: "server/endpoint.php?done" // 分组上传完成后处理
            }
        },
      //回调函数
      callbacks: {
        //文件开始上传
        onSubmit: function(id, fileName) {
          $messages.append(‘<div id="file-‘ + id + ‘" class="alert" style="margin: 20px 0 0">‘+fileName+‘</div>‘);
        },
        onUpload: function(id, fileName) {
          $(‘#file-‘ + id).addClass(‘alert-info‘)
                          .html(‘<img src="client/loading.gif" alt="Initializing. Please hold."> ‘ +
                                ‘Initializing ‘ +
                                ‘“‘ + fileName + ‘”‘);
        },
        //进度条
        onProgress: function(id, fileName, loaded, total) {
          if (loaded < total) {
            progress = Math.round(loaded / total * 100) + ‘% of ‘ + Math.round(total / 1024) + ‘ kB‘;
            $(‘#file-‘ + id).removeClass(‘alert-info‘)
                            .html(‘<img src="http://img.zcool.cn/community/01ff2756629d096ac725b2c8e95102.gif" width="50px" height="50px;" alt="In progress. Please hold."> ‘ +
                                  ‘上传文件中......‘ +  progress);
          } else {
            $(‘#file-‘ + id).addClass(‘alert-info‘)
                            .html(‘<img src="http://img.zcool.cn/community/01ff2756629d096ac725b2c8e95102.gif" width="50px" height="50px;" alt="Saving. Please hold."> ‘ +
                                  ‘上传文件中...... ‘);
          }
        },
        //上传完成后
        onComplete: function(id, fileName, responseJSON) {
          if (responseJSON.success) {
          var img = responseJSON[‘target‘]
            $(‘#file-‘ + id).removeClass(‘alert-info‘)
                            .addClass(‘alert-success‘)
                            .html(‘<i class="icon-ok"></i> ‘ +
                                  ‘上传成功! ‘ +
                                  ‘“‘ + fileName + ‘”‘
                                );
          } else {
            $(‘#file-‘ + id).removeClass(‘alert-info‘)
                            .addClass(‘alert-error‘)
                            .html(‘<i class="icon-exclamation-sign"></i> ‘ +
                                  ‘Error with ‘ +
                                  ‘“‘ + fileName + ‘”: ‘ +
                                  responseJSON.error);
          }
        },
        onError: function(id, name, reason, maybeXhrOrXdr) {
            console.log(id + ‘_‘ + name + ‘_‘ + reason);
        },
      }
    });

    //手动触发上传上传
     $(‘#triggerUpload‘).click(function() {
      uploader.uploadStoredFiles();
    });
    //取消某一个上传
     $(‘#cancelUpload‘).click(function() {
        uploader.cancel(0);
    });
    //取消所有未上传的文件
     $(‘#cancelAll‘).click(function() {
         //单个文件上传没有作用 因为已经在上传的不能使用这个cancelAll取消上传
         uploader.cancelAll();
    });
    //暂停上传某个文件
    $(‘#pauseUpload‘).click(function() {
         uploader.pauseUpload(0);
    });
    // 继续上传
    $(‘#continueUpload‘).click(function() {
         uploader.continueUpload(0);
    });
});
</script>

php(endpoint.php)代码:

//handler.php文件官网上下
require_once "handler.php";

       header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
       header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
       header("Cache-Control: no-store, no-cache, must-revalidate");
       header("Cache-Control: post-check=0, pre-check=0", false);
       header("Pragma: no-cache");
       header("Access-Control-Allow-Origin: http://file.com");//跨域域名且不能为通配符
       header("Access-Control-Allow-Methods: get, post");
       header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept,Cache-Control");
       header(‘Access-Control-Allow-Credentials:true‘);
$uploader = new UploadHandler();
// 文件类型限制
$uploader->allowedExtensions = array();
// 文件大小限制
$uploader->sizeLimit = null;
// 上传文件框
$uploader->inputName = "qqfile";
// 定义分组文件存放位置
$uploader->chunksFolder = "chunks";
$method = $_SERVER["REQUEST_METHOD"];

//上传目的文件夹(由于原来的文件存放规则不符合我们的需求所以修改了handler.php的代码添加了个文件夹生成规则【你也可以自定义】)
$uploadDirectory =  $uploader->getPathName(‘member_avatar‘);
if ($method == "POST") {
    header("Content-Type: text/plain");

    // 分组上传完成后对分组进行合并
    if (isset($_GET["done"])) {
        $result = $uploader->combineChunks($uploadDirectory); // 合并分组文件

    } else {
        //开始上传文件
        $result = $uploader->handleUpload($uploadDirectory);
        // 获取上传的名称
        $result["uploadName"] = $uploader->getUploadName();

    }
    echo json_encode($result);
}
//删除文件处理
else if ($method == "DELETE") {
    $result = $uploader->handleDelete($uploadDirectory);
    echo json_encode($result);
}
else {
    header("HTTP/1.0 405 Method Not Allowed");
}

以上是一个简单的自定义模板的配置,如有其他需求请看文档官网自定义模板的参数,方法说明

本人水平有限如有错误欢迎指出!

时间: 2024-10-08 14:10:38

FileUpload上传组件自定义模板(FineUploaderBasic)的使用的相关文章

文件上传组件 FileUpload组件的使用

文件的上传存在的意义 在项目中经常上传文件:qq上传图片,相册上传图片,资料的共享-- 实现文件上传的步骤 1.指定表单的类型为文件上传表单 必须指定表单的属性  enctype="multipart/form-data" <form action="" method="post" enctype="multipart/form-data> <input type="file" name="

Java 文件上传组件 Apache Commons FileUpload 应用指南(转)

在最初的 http 协议中,没有上传文件方面的功能.RFC1867("Form-based File Upload in HTML".)为 http 协议添加了这个功能.客户端的浏览器,如 Microsoft IE, Mozila, Opera 等,按照此规范将用户指定的文件发送到服务器.服务器端的网页程序,如 php, asp, jsp 等,可以按照此规范,解析出用户发送来的文件. 2.1客户端 简单来说,RFC1867规范要求http协议增加了file类型的input标签,用于浏览

配置fileupload(文件上传组件)

<properties> <commons-fileupload.version>1.3.1</commons-fileupload.version> </properties> <dependencyManagement> <dependencies> <!-- 文件上传组件 --> <dependency> <groupId>commons-fileupload</groupId>

ASP.NET Core WEB API 使用element-ui文件上传组件el-upload执行手动文件文件,并在文件上传后清空文件

前言: 从开始学习Vue到使用element-ui-admin已经有将近快两年的时间了,在之前的开发中使用element-ui上传组件el-upload都是直接使用文件选取后立即选择上传,今天刚好做了一个和之前类似的文件选择上传的需求,不过这次是需要手动点击按钮把文件上传到服务器中进行数据导入,而且最多只能够选择一个文件进行上传,上传成功后需要对file-list中的文件列表数据进行清空操作,在这里服务端使用的是ASP.NET Core WEB API来进行文件流数据接收和保存. 一.简单概述e

HTML5文件上传组件美化jQuery插件

简要教程 jQuery.filer是一款简单的HTML5文件上传组件美化jQuery插件.它能够完成单文件和多文件的上传,支持文件的拖拽,支持不同的文件格式校验,支持缩略图和图标等,是一款非常实用的文件上传插件.它的特点还有: 对文件上传File Input组件进行美化 支持多文件上传 支持校验文件:大小,扩展名等 支持创建文件的缩略图 每种类型的文件可以自定义图标 可以为缩略图,图标和input自定义模板和主题 可以移出已选择的文件 可以从剪切板粘贴图片 所有的图标在一个字体文件中 支持文件拖

从零开始编写自己的C#框架(23)——上传组件使用说明

文章导航 1.前言 2.上传组件功能说明 3.数据库结构 4.上传配置管理 5.上传组件所使用到的类 6.上传组件调用方法 7.效果演示 8.小结 1.前言 本系列所使用的是上传组件是大神July开发的,他为人比较低调,一直都没有写博.为了感谢他将这么好的插件开源出来,在这里简单的为他宣传一下.在我的圈子当中,他是一位非常牛的人,前端方面非常精通,没有解决不了的兼容性问题,而后端开发又精通多种开发语言(PHP.C#.VB.JAVA等),经手开发过的大中小型项目过百.承接各种外包开发,想联系他的话

Angular 2 + 折腾记 :(8) 动手写一个不怎么靠谱的上传组件

前言 上传功能在任何一个网站中的地位都是举足轻重的,这篇文章主要扯下如何实现一个上传组件 效果图 所具有的功能 支持的图片格式(不传参则使用默认参数) 支持的图片大小 图片上传之前会被压缩(前端) – 异步加载进来 上传过程会显示loading(loading组件)–就一些css3样式 支持组件高度设置,宽度自适应 支持标题设置 组件以模块形式导出 代码如下,相关逻辑请看注释. mit-upload.module.ts – 上传模块 // 这三个就不用再解释了 import { NgModule

vue大文件上传组件选哪个好?

需求:项目要支持大文件上传功能,经过讨论,初步将文件上传大小控制在500M内,因此自己需要在项目中进行文件上传部分的调整和配置,自己将大小都以501M来进行限制. 第一步: 前端修改 由于项目使用的是BJUI前端框架,并没有使用框架本身的文件上传控件,而使用的基于jQuery的Uploadify文件上传组件,在项目使用的jslib项目中找到了BJUI框架集成jQuery Uploadify的部分,这部分代码封装在bjui-all.js文件中, 在bjui-all.js文件中的全局变量定义中有以下

基于MVC4+EasyUI的Web开发框架形成之旅--附件上传组件uploadify的使用

很久之前,当我还在用Asp.NET开发一些行业管理系统的时候,就曾经使用这个组件作为文件的上传操作,在随笔<Web开发中的文件上传组件uploadify的使用>中可以看到,Asp.NET中如何使用这个组件进行文件上传的,当时上传文件的处理主要也是使用ashx一般处理程序来进行处理的.本文主要介绍我的Web开发框架中,在MVC4的环境中如何集成这个非常棒的文件上传组件的. 1.上传组件uploadify的说明及脚本引用 Uploadify 是 JQuery 一个著名的上传插件,利用 Flash