SWFUpload 文件上传插件常用的配置讲解

SWFUpload 文件上传插件常用的配置讲解,第1张

上传文件swfUpload 插件:

基本的文件上传涉及到的四个文件  (还有一个处理数据的php文件  这里没有涉及到)

html页面:

upload_window.html

js文件:

swfupload.js

handlers.js

fileprogress.js

第一:从html页面出发:

重要的是将页面加载时间中的var setting={}这个大对象中的参数设置好  以下都是这个对象里面的常用配置 非常重要

首先需要将swfupload.swf加载

在 var  setting={} 这个大对象里面加flash_url:值

如: flash_url: "<tpl>$siteurl_static</tpl>/assets/uc/js/swfupload.swf",

然后需要将上传的路径加入 如: upload_url: "http://load.zom.com/u.do?uploadkey=" + uploadkey + "&ck=" + ck + "&cc=" + cc,(java的上传路径)

相关的设置常用的有:

file_size_limit  (设置上传的大小)    file_types(设置文件上传的类型)file_types_description(设置文件上传描述)

file_upload_limit (设置文件上传的数量限制)file_queue_limit (设置文件队列数量限制森孝)

prevent_swf_caching : false  (在相关的swf文件增加随机参数避免Flash被缓存)

debug:false

按钮的相关配置:

button_width: "200",

button_height: "50",

button_text_left_padding: 16,

button_text_top_padding: 7,

button_cursor:  button_cursor 指定鼠标悬晌败停在Flash按钮上时的光标样式,可用值为SWFUpload.CURSOR里定义的常量。如:button_cursor: SWFUpload.CURSOR.HAND,

button_action(设置只能上传一个文档的限制:--》button_action: SWFUpload.BUTTON_ACTION.SELECT_FILE)

之后就是设置一些事件处理函数  这些都是在  handlers.js 里面相应的函数

file_dialog_start_handler: fileDialogStart,(设置文件对话开始函数)

file_queued_handler: fileQueued,(设置文此谨稿件队列函数)

file_dialog_complete_handler: fileDialogComplete,(设置文件对话完成处理函数)

file_queue_error_handler: fileQueueError,(设置队列错误处理函数)

upload_start_handler: uploadStart,(设置开始上传函数)

upload_progress_handler: uploadProgress,(设置上传进度处理函数)

upload_error_handler: uploadError,(设置上传错误处理函数)

upload_complete_handler: uploadComplete,(设置上传完成处理函数)

upload_success_handler: uploadSuccess(设置上传成功处理函数)

以上的配置都是在页面自动加载函数的setting大对象里面需要配置的基本参数

除了以上这些还有下面相应的非常关键的配置

别忘记:在setting大对象结束之后 在自动加载函数结束之前还有swfu = new SWFUpload(settings)  实例化一个对象

var setting还有比较重要的配置  如下:

1.关于上传进度的配置是关键:

在var setting={}这个大对象里面设置一个元素:

custom_settings: {

                    progressTarget: "fsUploadProgress"

 },

progressTarget的值(即fsUploadProgress)是文件上传进度的显示 将html里面设置相应的位置放id="fsUploadProgress"

如:<div class="progressbar progressbar-0" id="fsUploadProgress">

            <span class="prog-num">0</span>

        </div>

span标签里的0就是从0开始进行上传  0就是初始的显示进度

2:关于上传的按钮设置 

在 var setting={} 这个大对象里面设置  button_placeholder_id : "spanButtonPlaceHolder"

需要将html相应的上传按钮加上相应的id="spanButtonPlaceHolder"

如:<div id="upload_doc" class="up-btn"><i >上传文档</i><span id="spanButtonPlaceHolder"></span></div>

成功上传需要将相应的数据进行处理:

在html页面中需要写ajax进行数据的处理~

如:

//成功后调用

function agree_upload(){

            var doc_id=$('.doc_title').attr('id')

            if(doc_id>0){

                uploadFinish(doc_id)

                parent.DOC88Window.close()

            }else{

                alert('您还未选择重新上传的文档')

            }

        }

        function uploadFinish(new_p_id) {

            var old_p_id = "<tpl>$p_id</tpl>"

            $.ajax({

                url: "/ucr/doc.php?act=save_upload",

                type: "post",

                data: {

                    old_p_id: old_p_id,

                    new_p_id: new_p_id

                },

                dataType: "json",

                success: function (msg) {

                    if (msg.result == 1) {

                        alert("数据正确")

                    } else {

                        alert("数据错误")

                    }

                }

            })

        }

第二:因为html页面中setting配置中有相应的函数处理配置  涉及到handler.js函数,所以接下来到handler.js文件的处理配置

根据html页面的配置 处理函数的顺序进行相应的配置

首先是fileQueue函数  文件排队函数:

需要设置一个变量 关于flash动画的函数

var stats = swfu.getStats()

根据需要将文件上传队列数量进行限制

if (stats.files_queued >1) {

            alert("您的附件不能超过1个")

                    return false

    }

接下来是fileQueueError函数  文件排队错误函数:

根据需要将相应的设置放在这个函数里面

可以放在try catch函数里面    设置的限制如下:

      switch (errorCode) {

            case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT:

                alert('单个文件大小不要超过50MB')

                break

            case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE:

                alert('不能上传空文件')

                this.debug("Error Code: Zero byte file, File name: " + file.name + ", File size: " + file.size + ", Message: " + message)

                break

            case SWFUpload.QUEUE_ERROR.INVALID_FILETYPE:

                alert('文件类型错误')

                break

            default:

                if (file !== null) {

                }

                this.debug("Error Code: " + errorCode + ", File name: " + file.name + ", File size: " + file.size + ", Message: " + message)

                break

        }

接下来是uploadStart函数  文件上传开始函数:

设置相应的功能按钮的变换  比如上传开始(走到这个函数时 可以将相应的上传按钮改成上传中 并且禁止点击 就是禁用功能 加上一个取消上传按钮 )

可以将上传的文件的名称和文件格式显示出来 

如:

$("#upload_doc i").html("上传中")

    $('#cancel_upload').html('取消')

$("#upload_doc").attr('disabled','disabled')

var name = file.name

                $('.doc_title').html(name)

        var format = file.type

        format = format.toLocaleUpperCase()

        format = format.replace('.', '')

        $('.doc_format').html(format) 

接下来是uploadProgress函数  文件上传进度函数:如:

var percent = Math.ceil((bytesLoaded / bytesTotal) * 100)//上传的进度

        var progress = new FileProgress(file, this.customSettings.progressTarget)

        progress.setProgress(percent)

        progress.setStatus("正在上传")

接下来是uploadSuccess函数  文件上传成功函数

然后是uploadError函数  上传失败函数:

其他相关的函数可以根据需要进行设置

第三:fileprogress.js文件  关于文件上传进度  关键的是:

FileProgress函数的设置:

如:

function FileProgress(file, targetID) {

        this.fileProgressID = file.id

        this.fileProgressWrapper = document.getElementById(this.fileProgressID)

        if (!this.fileProgressWrapper) {

                  this.fileProgressWrapper = document.createElement("li")

                  this.fileProgressWrapper.id = this.fileProgressID

                  document.getElementById(targetID).appendChild(this.fileProgressWrapper)

        }

      this.setTimer(null)

}

FileProgress.prototype.setProgress = function (percentage) {}  里面进度样式的处理

如:

if (percentage <= 5) {

                $(".progressbar").addClass('progressbar-5')

    } else if (percentage <= 10) {

                $(".progressbar").addClass('progressbar-10')

    }......

第四:swfupload.js文件    几乎不用修改 可以将不用的函数删减

有很详细的讲解 链接:https://www.cnblogs.com/myboke/p/5579236.html

http://www.runoob.com/w3cnote/swfupload-guide.html

DropzoneJS是一个提供文件拖拽上传并且提供图片预乎孙差览的开源类库,零依赖且高度可定制

官方文档:https://www.dropzonejs.com/

中文版本:http://wxb.github.io/dropzonejs.com.zh-CN/dropzonezh-CN/#installation

Github: https://github.com/enyo/dropzone/

引入到我们的页面

这是官网Demo的效果,如果你也想用到这样的效果,可以直接到源码包的dist文件夹下样式拷贝过来。Dropzone 不会 处理你上传到服务器上面的文件. 你必须自己编写代码实现接收和保存上传的文件。

我们只需要创建一个class类名是dropzone的form表单元素:

Dropzone将查找所有的 class 属性中包含 dropzone 的表单元素,就是这么简单,这些上传文件将被正常处理就像这里是一段像下面这样的HTML代码:

不是必须在form上,你也可以通过js代码初始化一个dropzone实例

或者假如你用到了jquery也可以这样写

有两种方式配置 dropzones.

下面是他了一些可配置项

当一个文件被添加到 dropzone 时, 它的 status 就被设置成了 Dropzone.QUEUED ,这就意味着这个文件已经在上传队列中了,如果你设置了选项 autoProcessQueue 为 true, 然后队列就会被立即处理, 在文件拖放到zone或者上传完成后, 调用 .processQueue() 来检查当前有多少文件正在被上传,如果你设置 autoProcessQueue 为 false, 那么 .processQueue() 方法是不会被隐式调用的. 这意味着你必须在你想要上传队列中凯悔的所有文件时,自己去调用这个方法。

可以用配置previewTemplate来自定义,默认的代码是下面这样的

在容器 (dz-preview) 中, dz-processing 是文件上传时的显示样式, dz-success 是文件上传成功时显示 and dz-error 是文件没有上传时显示样式. 最后一个, data-dz-errormessage 将包含服务器返回的文本信息,如果你想重写,可以参照官网给定的配置自己定义

如果你想删除已添加到dropzone中的文件,你可以调用 .removeFile(file). 这个方法也可以触发 removedfile 事件,下面是一个文件上传完成后删除文件的例子

如果你想删除所有文件,调用removeAllFiles()方法即可,具体有哪些方法参照官方文档

当处理文件时触发事件, 你可以通过调用 .on(eventName, callbackFunction) 很容易地在你的 实例 注册事件监听,最好实在init配置中注册监听

或者这样也可以,但完全没必要

下面是官网文档中提供的事件列表

在这个大多数团队采用敏捷开发的开发模式,在工作时可能没那么多时间自己去重写一些已有的东西,借助第三方岁皮的插件可以快速的提供好的解决方案,因此,不管是学习还是工作,第三方的都可以尝试下,以便在不影响工作的情况下,又能够在闲暇之时学习!

阿壳素材库通过插件上传文件按以下方法:

1、点击选择文谨弊件功能按钮。

2、选择需要上传的文件确认后上传。吵扰

3、上传的文件就会显示在图祥碰族像信息中,同时可以设置图片的格式。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12226318.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-22
下一篇 2023-05-22

发表评论

登录后才能评论

评论列表(0条)

保存