jQuery-File-Upload外部按钮触发上传

这个控件功能还不错,但是对于外部调用上传有点压力。

比如说,他可以实现在添加一个文件后为文件添加一个上传按钮,这个是写在add中的,可以调用data.submit()提交数据

但是如果我要实现外部按钮点击时触发这个data.submit()就有压力了。

有两种方式:

1、想办法保存data,在外部事件触发时,调用到这个data并submit。

2、想办法为该外部按钮在add时注册一个事件,并在点击时触发这个事件后submit()

3、生成一个隐藏button,在外部事件触发时,调用这个button.click()即可。但是要注意重复绑定的问题,要先清除一下事件。

(典型应用,一个表单中有一个上传输入框,我想调用这个上传输入框的进度事件,用默认的提交有点不方便,就需要使用这个控件,但是在使用控件后,提交时就会因为控件的原因,要么提交后取不到文件(加入add,submit等之后),要么能上传,但是进度无事件(不加任何属性))。

现在的要求是,点击外部上传按钮,调用这个控件来上传。

研究upload-ui源码后,发现他是调用了jQuery.data来保存对象,相当于第一种方法:

add: function (e, data) {
                if (e.isDefaultPrevented()) {
                    return false;
                }
                var $this = $(this),
                    that = $this.data(‘blueimp-fileupload‘) ||
                        $this.data(‘fileupload‘),
                    options = that.options;
                data.context = that._renderUpload(data.files)
                    .data(‘data‘, data)    //这里把数据绑定进去
                    .addClass(‘processing‘);
                options.filesContainer[
                    options.prependFiles ? ‘prepend‘ : ‘append‘
                ](data.context);
                that._forceReflow(data.context);
                that._transition(data.context);
                data.process(function () {
                    return $this.fileupload(‘process‘, data);
                }).always(function () {
                    data.context.each(function (index) {
                        $(this).find(‘.size‘).text(
                            that._formatFileSize(data.files[index].size)
                        );
                    }).removeClass(‘processing‘);
                    that._renderPreviews(data);
                }).done(function () {
                    data.context.find(‘.start‘).prop(‘disabled‘, false);
                    if ((that._trigger(‘added‘, e, data) !== false) &&
                            (options.autoUpload || data.autoUpload) &&
                            data.autoUpload !== false) {
                        data.submit();
                    }
                }).fail(function () {
                    if (data.files.error) {
                        data.context.each(function (index) {
                            var error = data.files[index].error;
                            if (error) {
                                $(this).find(‘.error‘).text(error);
                            }
                        });
                    }
                });
            },

这里绑定事件

 _initEventHandlers: function () {
            this._super();
            this._on(this.options.filesContainer, {
                ‘click .start‘: this._startHandler,
                ‘click .cancel‘: this._cancelHandler,
                ‘click .delete‘: this._deleteHandler
            });
            this._initButtonBarEventHandlers();
        },

这里是事件:

_startHandler: function (e) {
            e.preventDefault();
            var button = $(e.currentTarget),
                template = button.closest(‘.template-upload‘),
                data = template.data(‘data‘);
            button.prop(‘disabled‘, true);
            if (data && data.submit) {
                data.submit();
            }
        },

取到其中的data并提交。

其实也可以调用send方法来发送,但是send方法的参数要求较高,

$(‘#fileupload‘).fileupload(‘send‘, {files: filesList});

要求参数filesList为 an object with an array (or array-like list) of File or Blobobjects as files property.

同样添加时也可以直接添加文件列表,并可同时覆盖一部分属性

$(‘#fileupload‘).fileupload(‘add‘, {files: filesList, url: ‘/path/to/upload/handler.json‘});
Retrieving overall progress data
var overallProgress = $(‘#fileupload‘).fileupload(‘progress‘);
时间: 2024-12-08 15:33:02

jQuery-File-Upload外部按钮触发上传的相关文章

用jQuery File Upload做的上传控件demo,支持同页面多个上传按钮

需求 有这么一个需求,一个form有多个文件要上传,但又不是传统的图片批量上传那种,是类似下图这种需求,一开始是用的swfupload做的上传,但是问题是如果有多个按钮的话,就要写很多重复的代码,于为了代码的简洁所以就开始寻求其他的方法,期间试过uploadify,但是由于样式始终调不出来,最后就放弃了,直到发现这么个小巧的玩意,jQuery File Upload. 本文包含了upload的js实现,html的分析,css的实现等内容,文章末尾有git地址 最简运行时 官网下载的demo有N多

jQuery File Upload文件上传插件使用

jQuery File Upload 是一个Jquery文件上传组件,支持多文件上传.取消.删除,上传前缩略图预览.列表显示图片大小,支持上传进度条显示:支持各种动态语言开发的服务器端.官网链接:https://github.com/blueimp/jQuery-File-Upload/wiki 特点:拖放支持:上传进度条:图像预览:可定制和可扩展的:兼容任何服务器端应用平台(PHP, Python, Ruby on Rails, Java, Node.js, Go etc.). 使用方法: 1

jQuery File Upload 图片上传解决方案兼容IE6+

1.下载:https://github.com/blueimp/jQuery-File-Upload 2.命令: npm install bower install ====================== 3.修改basic.html 如下: 1.cdn 静态引用修改 2.ajax提交路径修改 ====&&& 其他demo页面修改同理 =======: 下面修改完了以后.如下所示: <!DOCTYPE HTML><!--/* * jQuery File Up

jQuery File Upload跨域上传

最近在做一个一手粮互联网项目,方案为前后端分离,自己负责前端框架,采用了Requirejs+avalonjs+jquery三个框架完成. 前后端通过跨域实现接口调用,中间也发现了不少问题,尤其是在富文本编辑器和上传插件跨域的处理过程中,费劲了脑汁,总算解决了. 上传选择了jQuery File Upload,兼容性还是相对不错,并且支持跨域,但是没有一个完整的跨域Demo,只能看源码找帮助. 下载地址:https://github.com/blueimp/jQuery-File-Upload 页

jquery file upload 文件上传插件

1. jquery file upload 下载 jquery file upload Demo 地址:https://blueimp.github.io/jQuery-File-Upload/ jquery file upload 下载 地址:https://github.com/blueimp/jQuery-File-Upload/tags jquery file upload API 地址:https://github.com/blueimp/jQuery-File-Upload/wiki

jQuery File Upload

jQuery File Upload 需求 有这么一个需求,一个form有多个文件要上传,但又不是传统的图片批量上传那种,是类似下图这种需求,一开始是用的swfupload做的上传,但是问题是如果有多个按钮的话,就要写很多重复的代码,于为了代码的简洁所以就开始寻求其他的方法,期间试过uploadify,但是由于样式始终调不出来,最后就放弃了,直到发现这么个小巧的玩意,jQuery File Upload. 本文包含了upload的js实现,html的分析,css的实现等内容,文章末尾有git地址

jQuery File Upload 单页面多实例的实现

jQuery File Upload 的 GitHub 地址:https://github.com/blueimp/jQuery-File-Upload 插件描述:jQuery File Upload 是一个 jQuery 图片上传组件,支持多文件上传.取消.删除,上传前缩略图预览.列表显示图片大小,支持上传进度条显示.插件基于开放的标准,如 HTML5 和 JavaScript ,不需要额外的浏览器插件(例如使用Adobe 的 Flash ),在旧版浏览器中使用 XMLHttpRequest

jquery File upload使用总结

1. jquery file upload 下载 jquery file upload Demo 地址:https://blueimp.github.io/jQuery-File-Upload/ jquery file upload 下载   地址:https://github.com/blueimp/jQuery-File-Upload/tags jquery file upload API    地址:https://github.com/blueimp/jQuery-File-Upload

jquery file upload 后台收到的文件名中文乱码, filename中文乱码

本周用jquery file upload做上传文件的功能,后台会接受文件,并且截取文件名作为字符存入数据库.基本功能实现时候,试了几个文件,发现如果文件名如果没有中文就OK,如果文件名带中文的话,后台收到的就是中文乱码,怎么去解码都没用. 例如,上传的文件叫做"昕锐配置表.xls",但是到后台收到的却是 "鏄曢攼閰嶇疆琛?xls" ,如下图: 似乎也不是解码能解决的问题. 于是乎想弄清楚这个文件名是在哪个环节出问题的.首先写了一个最简单的html页面,里面就是最原