框架发布

框架发布

最新版本发布信息
提问交流

提问交流

使用问题咨询
经验分享

经验分享

开发经验交流分享
功能建议

功能建议

官方开发功能建议
BUG反馈

BUG反馈

使用BUG反馈
模块&插件&数据包

模块&插件&数据包

模块插件数据包分享

1.3.1版本关于表格自适应问题?

回复

提问交流水目 发起了问题 • 1 人关注 • 0 个回复 • 44 次浏览 • 2019-04-16 12:33 • 来自相关话题

1.4版本的文章编辑报错问题

回复

BUG反馈cooltea521 发起了问题 • 1 人关注 • 0 个回复 • 68 次浏览 • 2019-04-15 17:59 • 来自相关话题

1.4版本路由问题

提问交流mx2118 回复了问题 • 2 人关注 • 1 个回复 • 128 次浏览 • 2019-04-13 22:39 • 来自相关话题

js二维码插件

回复

经验分享mx2118 发起了问题 • 1 人关注 • 0 个回复 • 33 次浏览 • 2019-04-13 17:45 • 来自相关话题

海豚PHP会更新到thinkphp5.1 版本系列吗?

框架发布mxdmxd 回复了问题 • 4 人关注 • 3 个回复 • 1372 次浏览 • 2019-04-09 16:29 • 来自相关话题

音频文件上传

提问交流raybon 回复了问题 • 3 人关注 • 2 个回复 • 58 次浏览 • 2019-04-08 09:16 • 来自相关话题

有没有什么方法拿到缩略图?求解

提问交流cyg900628 回复了问题 • 2 人关注 • 1 个回复 • 65 次浏览 • 2019-04-04 13:10 • 来自相关话题

在百度编辑器上超链接、视频等按钮的弹出框没有解析html代码

回复

提问交流maoqi 回复了问题 • 1 人关注 • 1 个回复 • 46 次浏览 • 2019-04-03 11:24 • 来自相关话题

内容无法保存,提示服务器错误

提问交流mx2118 回复了问题 • 3 人关注 • 4 个回复 • 827 次浏览 • 2019-03-28 13:40 • 来自相关话题

cms内容管理的一些建议

回复

功能建议mx2118 发起了问题 • 1 人关注 • 0 个回复 • 105 次浏览 • 2019-03-28 13:31 • 来自相关话题

setTrigger无法使用checkbox进行触发

提问交流cc110110 回复了问题 • 2 人关注 • 1 个回复 • 87 次浏览 • 2019-03-26 10:05 • 来自相关话题

联动复选框

回复

提问交流泪天剑 发起了问题 • 1 人关注 • 0 个回复 • 56 次浏览 • 2019-03-25 14:25 • 来自相关话题

自定义分片上传字段

经验分享yangweijie 发表了文章 • 1 个评论 • 127 次浏览 • 2019-03-23 16:26 • 来自相关话题

有用户说要断点续传,然后自己没研究过,但是发现webupload里支持分片上传的,就研究实现了下,本来试了一个stream js 但是在海豚里各种ui没调通。
 
 还有官方手册,终于把他搞出来了。
 
 
思路,第一自己扩展sendFile 事件第二,改变分片上传参数,包括上传地址
第三 实现分片上传的方法。
 
WebUploader.Uploader.register({
"name": "cutfile_uploader",
"before-send": "beforeSend" // 整个文件上传前
}, {
beforeSend:function(block){
var deferred = WebUploader.Deferred();
if(is_upload)//跳过到开始上传的哪一个分片时
{
deferred.resolve();
}else if(totalFiles) {
//已经获取过文件数量则直接判断是否跳过
//当前分片下标小于等于目录下的文件数量就认为分块存在,因为分块上传下标是由小到大
// console.log(block.chunk);
// console.log(totalFiles);
// console.log(!totalFiles.in_array(block.chunk));
if (!totalFiles.in_array(block.chunk - 1)) {
deferred.resolve();
} else {
//分块存在,跳过
deferred.reject();
}
} else {
$.post(cutfile_conf.check_upload_url, {md5: fileMd5}, function (data) {
console.log(data);
if (data.code) {
totalFiles = data.data;
//当前分片下标小于等于目录下的文件数量就认为分块存在,因为分块上传下标是由小到大
if (!data.data.in_array(block.chunk-1)) {
deferred.resolve();
} else {
//分块存在,跳过
deferred.reject();
}
} else {
is_upload = true;
deferred.resolve();
}
}, 'json');
}
}
});注册send-file事件
 
// 当有文件添加进来的时候
uploader.on( 'fileQueued', function( file ) {
console.log(new Date());
// 设置当前上传对象
curr_uploader = uploader;
uploader.md5File( file )
// 完成
.then(function(val) {
fileMd5 = val;
var formData = uploader.option('formData');
// console.log('md5 result:', val);
formData.md5 = fileMd5;
// console.log(formData);
uploader.option('formData',formData);
// console.log(uploader.option('formData'));
});
var $li = '<li id="' + file.id + '" class="list-group-item file-item">' +
'<span class="pull-right file-state"><span class="text-info"><i class="fa fa-sun-o fa-spin"></i> 正在读取文件信息...</span></span>' +
'<i class="fa fa-file"></i> ' +
file.name +
' [<a href="javascript:void(0);" class="download-file">下载</a>] [<a href="javascript:void(0);" class="remove-file">删除</a>]' +
'<div class="progress progress-mini remove-margin active" style="display: none"><div class="progress-bar progress-bar-primary progress-bar-striped" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 0%"></div></div>'+
'</li>';

if ($multiple) {
$file_list.append($li);
} else {
$file_list.html($li);
// 清空原来的数据
$input_file.val('');
}
});
修改file-queueshi事件,主要是每次上传时不光传file 对象还将原始md5传过去用于组成分片的文件用,方便最终检测是否存在已传过的分片。这里面有一个大坑,curr_uploader = uploader; 这个设置的在form.js里
WebUploader.Uploader.register({
            "before-send-file": "beforeSendFile" // 整个文件上传前
        }, {
            beforeSendFile:function(file){
                var $li = $( '#'+file.id );
                var deferred = WebUploader.Deferred();
                var owner = this.owner;

                owner.md5File(file).then(function(val){
                    $.ajax({
                        type: "POST",
                        url: dolphin.upload_check_url,
                        data: {
                            md5: val
                        },
                        cache: false,
                        timeout: 10000, // 超时的话,只能认为该文件不曾上传过
                        dataType: "json"
                    }).then(function(res, textStatus, jqXHR){
                        if(res.code){
                            // 已上传,触发上传完成事件,实现秒传
                            deferred.reject();
                            curr_uploader.trigger('uploadSuccess', file, res);
                            curr_uploader.trigger('uploadComplete', file);
                        }else{
                            // 文件不存在,触发上传
                            deferred.resolve();
                            $li.find('.file-state').html('<span class="text-info">正在上传...</span>');
                            $li.find('.img-state').html('<div class="bg-info">正在上传...</div>');
                            $li.find('.progress').show();
                        }
                    }, function(jqXHR, textStatus, errorThrown){
                        // 任何形式的验证失败,都触发重新上传
                        deferred.resolve();
                        $li.find('.file-state').html('<span class="text-info">正在上传...</span>');
                        $li.find('.img-state').html('<div class="bg-info">正在上传...</div>');
                        $li.find('.progress').show();
                    });
                });
                return deferred.promise();
            }
        });
里面的 妙传实现时 出发已有的webload uploadSuccess 会报为定义的方法,必须修改 form.js
将var curr_uploader = {}; 这个定义提到$(function(){ 外,变为全局变量。前端我也不太懂,
总之官方的实现 不管表单里有没有webupload 都跑去注册了一下事件,然后才加载init.js 自定义表单项的js 并且我试了用官方的 unregistered webupload 都无效。官方要考虑一下扩展性,或者官方支持分片最好。对应的上传和检测 方法我已经更改了admin里的ajax 实现了。
 
所以官方的自定义字段的后端实现 也不知道如何去扩展一个控制器方法。
 
大家把我的附件解压放到项目里,只支持1.1.0 以上。 然后修改一行form.js  就可以了。
 
 
参考页面:
public function index(){
return ZBuilder::make('form')
->setPageTitle('分片上传')
->addCutfile('file', '上传')
->fetch();
}有个疑惑,看了很多文章,chunk 发现upload都是1开始 而webupload里是从0开始的。
还有感觉获取本地信息检查妙传总感觉卡,还有断电续传的进度 不想现象的 自动晚上长,但是请求数确实会比重新传的分片数要少。希望官方参考本文章增加一个分片上传的字段体验完整的功能
  查看全部

20190323160615.png

有用户说要断点续传,然后自己没研究过,但是发现webupload里支持分片上传的,就研究实现了下,本来试了一个stream js 但是在海豚里各种ui没调通。
 
 还有官方手册,终于把他搞出来了。
 
 
思路,第一自己扩展sendFile 事件第二,改变分片上传参数,包括上传地址
第三 实现分片上传的方法。
 
 WebUploader.Uploader.register({
"name": "cutfile_uploader",
"before-send": "beforeSend" // 整个文件上传前
}, {
beforeSend:function(block){
var deferred = WebUploader.Deferred();
if(is_upload)//跳过到开始上传的哪一个分片时
{
deferred.resolve();
}else if(totalFiles) {
//已经获取过文件数量则直接判断是否跳过
//当前分片下标小于等于目录下的文件数量就认为分块存在,因为分块上传下标是由小到大
// console.log(block.chunk);
// console.log(totalFiles);
// console.log(!totalFiles.in_array(block.chunk));
if (!totalFiles.in_array(block.chunk - 1)) {
deferred.resolve();
} else {
//分块存在,跳过
deferred.reject();
}
} else {
$.post(cutfile_conf.check_upload_url, {md5: fileMd5}, function (data) {
console.log(data);
if (data.code) {
totalFiles = data.data;
//当前分片下标小于等于目录下的文件数量就认为分块存在,因为分块上传下标是由小到大
if (!data.data.in_array(block.chunk-1)) {
deferred.resolve();
} else {
//分块存在,跳过
deferred.reject();
}
} else {
is_upload = true;
deferred.resolve();
}
}, 'json');
}
}
});
注册send-file事件
 
// 当有文件添加进来的时候
uploader.on( 'fileQueued', function( file ) {
console.log(new Date());
// 设置当前上传对象
curr_uploader = uploader;
uploader.md5File( file )
// 完成
.then(function(val) {
fileMd5 = val;
var formData = uploader.option('formData');
// console.log('md5 result:', val);
formData.md5 = fileMd5;
// console.log(formData);
uploader.option('formData',formData);
// console.log(uploader.option('formData'));
});
var $li = '<li id="' + file.id + '" class="list-group-item file-item">' +
'<span class="pull-right file-state"><span class="text-info"><i class="fa fa-sun-o fa-spin"></i> 正在读取文件信息...</span></span>' +
'<i class="fa fa-file"></i> ' +
file.name +
' [<a href="javascript:void(0);" class="download-file">下载</a>] [<a href="javascript:void(0);" class="remove-file">删除</a>]' +
'<div class="progress progress-mini remove-margin active" style="display: none"><div class="progress-bar progress-bar-primary progress-bar-striped" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 0%"></div></div>'+
'</li>';

if ($multiple) {
$file_list.append($li);
} else {
$file_list.html($li);
// 清空原来的数据
$input_file.val('');
}
});
修改file-queueshi事件,主要是每次上传时不光传file 对象还将原始md5传过去用于组成分片的文件用,方便最终检测是否存在已传过的分片。这里面有一个大坑,
curr_uploader = uploader;  这个设置的在form.js里 
WebUploader.Uploader.register({
            "before-send-file": "beforeSendFile" // 整个文件上传前
        }, {
            beforeSendFile:function(file){
                var $li = $( '#'+file.id );
                var deferred = WebUploader.Deferred();
                var owner = this.owner;

                owner.md5File(file).then(function(val){
                    $.ajax({
                        type: "POST",
                        url: dolphin.upload_check_url,
                        data: {
                            md5: val
                        },
                        cache: false,
                        timeout: 10000, // 超时的话,只能认为该文件不曾上传过
                        dataType: "json"
                    }).then(function(res, textStatus, jqXHR){
                        if(res.code){
                            // 已上传,触发上传完成事件,实现秒传
                            deferred.reject();
                            curr_uploader.trigger('uploadSuccess', file, res);
                            curr_uploader.trigger('uploadComplete', file);
                        }else{
                            // 文件不存在,触发上传
                            deferred.resolve();
                            $li.find('.file-state').html('<span class="text-info">正在上传...</span>');
                            $li.find('.img-state').html('<div class="bg-info">正在上传...</div>');
                            $li.find('.progress').show();
                        }
                    }, function(jqXHR, textStatus, errorThrown){
                        // 任何形式的验证失败,都触发重新上传
                        deferred.resolve();
                        $li.find('.file-state').html('<span class="text-info">正在上传...</span>');
                        $li.find('.img-state').html('<div class="bg-info">正在上传...</div>');
                        $li.find('.progress').show();
                    });
                });
                return deferred.promise();
            }
        });
里面的 妙传实现时 出发已有的webload uploadSuccess 会报为定义的方法,必须修改 form.js
将var curr_uploader = {};  这个定义提到$(function(){ 外,变为全局变量。前端我也不太懂,
总之官方的实现 不管表单里有没有webupload 都跑去注册了一下事件,然后才加载init.js 自定义表单项的js 并且我试了用官方的 unregistered webupload 都无效。官方要考虑一下扩展性,或者官方支持分片最好。
对应的上传和检测 方法我已经更改了admin里的ajax 实现了。
 
所以官方的自定义字段的后端实现 也不知道如何去扩展一个控制器方法。
 
大家把我的附件解压放到项目里,只支持1.1.0 以上。 然后修改一行form.js  就可以了。
 
 
参考页面:
	public function index(){
return ZBuilder::make('form')
->setPageTitle('分片上传')
->addCutfile('file', '上传')
->fetch();
}
有个疑惑,看了很多文章,chunk 发现upload都是1开始 而webupload里是从0开始的。
还有感觉获取本地信息检查妙传总感觉卡,还有断电续传的进度 不想现象的 自动晚上长,但是请求数确实会比重新传的分片数要少。希望官方参考本文章增加一个分片上传的字段体验完整的功能
 

表单百度地图

回复

BUG反馈ly2997 发起了问题 • 1 人关注 • 0 个回复 • 63 次浏览 • 2019-03-23 09:22 • 来自相关话题

全站 https 还是无法设置吗?

回复

BUG反馈18y 回复了问题 • 1 人关注 • 1 个回复 • 102 次浏览 • 2019-03-21 17:18 • 来自相关话题

select怎样禁止选中

回复

提问交流泪天剑 发起了问题 • 1 人关注 • 0 个回复 • 64 次浏览 • 2019-03-19 22:54 • 来自相关话题

联动怎样一个带动多个

提问交流cooltea521 回复了问题 • 2 人关注 • 1 个回复 • 82 次浏览 • 2019-03-19 18:13 • 来自相关话题

版本升级了以前的插件也不能用了额

回复

提问交流lxj 发起了问题 • 1 人关注 • 0 个回复 • 87 次浏览 • 2019-03-19 09:36 • 来自相关话题

tp漏洞getshell

提问交流accexx 回复了问题 • 2 人关注 • 1 个回复 • 301 次浏览 • 2019-03-18 19:49 • 来自相关话题

银行列表管理插件

模块&插件cooltea521 发表了文章 • 0 个评论 • 155 次浏览 • 2019-03-12 09:06 • 来自相关话题

经常用到银行卡信息或第三方支付时候 就用到银行和银行代码
项目中涉及到我就弄了一个 请多多指教
 
用法呢:$bank_list = plugin_action('Bank','Bank','getBank');
经常用到银行卡信息或第三方支付时候 就用到银行和银行代码
项目中涉及到我就弄了一个 请多多指教
 
用法呢:
$bank_list = plugin_action('Bank','Bank','getBank');