知启蒙大文件上传组件,该组件实现大文件分片上传,包含服务端接收碎片上传和管理功能,以及前端UI的进度条、上传速度等界面。同时还支持按文件内容MD5码、相同文件名称比对秒传等功能,是业务系统应用不可缺少的组件之一。
ZulBootstrap.java3KB
/*
* 版权所有 (C) 2015 知启蒙(ZHIQIM) 保留所有权利。[遇见知启蒙,邂逅框架梦,本文采用木兰宽松许可证第2版]
*
* https://zhiqim.org/project/zhiqim_components/zhiqim_upload_large.htm
*
* Zhiqim UploadLarge is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
* http://license.coscl.org.cn/MulanPSL2
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
*/
package org.zhiqim.uploadlarge;
import org.zhiqim.httpd.context.ServiceExecutor;
import org.zhiqim.httpd.context.ZmlBootstrap;
import org.zhiqim.kernel.Z;
import org.zhiqim.kernel.config.ItemType;
import org.zhiqim.kernel.schedule.Day;
import org.zhiqim.kernel.schedule.Scheduler;
import org.zhiqim.manager.dao.ZmrParamDao;
import org.zhiqim.uploadlarge.service.ZulAccess;
import org.zhiqim.uploadlarge.service.ZulService;
/**
* 大文件上传引导类
*
* @version v1.0.0 @author zouzhigang 2018-11-23 新建与整理
*/
public class ZulBootstrap extends ZmlBootstrap implements ZulConstants
{
private Scheduler scheduler;
private boolean self;
private static Day task;
/*******************************************************************************/
//初始化&销毁
/*******************************************************************************/
@Override /** 初始化之前 */
protected void initBefore() throws Exception
{
//1.把本对象加入到上下文中方便找到该类
context.setAttribute(ZulBootstrap.class, this);
//2.在配置加载之后,把/service/uploadlarge和/service/upll/*加到服务中
ServiceExecutor executor = context.getServiceExecutor();
executor.addService(_PATH_SERVICE_UPLOAD_LARGE_, new ZulService());
executor.addService(_PATH_SERVICE_UPLOAD_LARGE_ACCESS_, new ZulAccess());
}
@Override /** 初始化之后 */
protected void initAfter() throws Exception
{
//1.检查参数
ZmrParamDao.addGroupIfNotExists(ZUL_NAME, 2, ItemType.PROTECTED, "大文件上传");
ZmrParamDao.addParamIfNotExists(ZUL_NAME, ZUL_ROOT_DIR, "./data/uploadlarge", 1, ItemType.PROTECTED, "大文件上传根目录");
ZmrParamDao.addParamIfNotExists(ZUL_NAME, ZUL_ALLOW_EXTS, "png,jpg,gif", 2, ItemType.PUBLIC, "大文件上传支持访问的类型");
//2.增加定时任务清理上传文件碎片表
initTask();
}
private void initTask()
{
if (task != null)
return;
//有可能是多个上下文环境都使用了该组件,只取第一个组件设置任务
self = true;
task = new Day(new ZulTask(), 5, 7, 7);
scheduler = Z.glb().getc(Scheduler.class);
scheduler.addTask(task);
}
@Override
public void destroy()
{
if (self)
{//由自己创建的,结束时清除
scheduler.removeTask(task);
}
}
}