Update to v1.0.8-RE

master
kohgylw 2018-11-16 14:57:48 +08:00
parent e33d3da4a9
commit cd3b9f39f7
16 changed files with 174 additions and 55 deletions

BIN
.DS_Store vendored

Binary file not shown.

View File

@ -1,6 +1,6 @@
# kiftd——青阳网络文件传输系统 #
## 一款面向个人、团队、小型组织的网盘应用系统,免费、开源、完善。 ##
### 欢迎访问kiftd官方资源站Welcome to visit kiftd home page! ###
### 欢迎访问kiftd官方资源站Welcome to visit kiftd home page https://kohgylw.gitee.io/ ###
-------
@ -23,10 +23,12 @@
* ### 您需要利用自己的资源搭建起一个网盘系统而苦于没有好的选择?
> 使用破解软件同样无法确保安全性,闭源的特性令人担忧。同时,很多已有的网盘服务器软件性能笨重、功能简单、语言的障碍更是使用中不可忽视的问题。
_注kift为功能性内核的开发代号其应用版本被称为kiftd_
### 现在您可以选择kiftd了
本软件的作者 kohgylw 相信除了他本人之外一定还有其他人也面临着同样的问题。毕竟作为教师的他需要时常分发资料给学生——在他成功弄丢了几次U盘后便萌生了利用自己闲暇的时间去开发出一套“基于常见web浏览器的网络文件存储、分发、管理、预览系统”的计划。该系统要比ftp更便捷要比操作系统自带的文件分享功能适应性更强要比已有的网盘软件更强大、更高效。不久之后作为该计划的成果这款名为kiftd的软件就此诞生了。
_注kift为该功能的开发名称其实际成果命名为kiftd。_
-------
## kiftd有哪些优势
@ -72,6 +74,15 @@ _注kift为功能性内核的开发代号其应用版本被称为kiftd_
> 提示:当您更新版本后,请手动清除浏览器的缓存,之后刷新网盘主页以确保数据文件保持最新!否则可能导致新版页面功能无法使用。
### 新版本v1.0.8
本次更新增加了一些新功能,同时进一步提高了稳定性,推荐所有用户升级体验。
+ 修正断点续传存在的问题——经一些使用者反馈该问题会导致下载速度越来越慢直至降为0。该问题已紧急修复确保主流下载工具软件能够正确进行多线程下载。
+ 图片分页预览——当需要预览超过15张图片时kiftd能自动将其分页您可以使用翻页功能查看所有图片。
+ 账户配置实时更新——现在更新账户配置无需要再重启kiftd了。kiftd会在运行中自动加载并更新账户配置文件只需稍等片刻便会生效。
+ 正确识别安装目录——现在kiftd能够识别自己到底被放置在哪个路径下了您也可以在任意路径下启动它了针对命令环境
+ 查看下载链接——为了进一步方便使用下载工具进行下载,您可以直接在下载提示框中直接查看下载链接了。
+ 修正了1MB以下体积文件的显示——它们现在会显示为“<1MB0MB
### 新版本v1.0.7
本次更新加入了新的功能,并对已有的问题进行修正,推荐所有用户升级体验。
+ 断点续传——现在kiftd的下载功能已经支持断点续传技术了这意味着您可以随时暂停并继续您的下载。同时该功能也为多线程下载技术提供了支持这意味着您还可以借助一些主流下载工具来进一步提高文件的下载速度。

Binary file not shown.

BIN
webContext/.DS_Store vendored

Binary file not shown.

BIN
webContext/css/left.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 927 B

View File

@ -65,4 +65,8 @@ body {
-webkit-border-radius: 20px;
border-radius: 20px;
filter: progid:DXImageTransform.Microsoft.Alpha(opacity=70);
}
.wordbreak{
word-break:break-all
}

View File

@ -1 +1 @@
@charset "UTF-8";.titlebox{height:30px;line-height:30px;padding-top:5px;padding-bottom:5px;padding-left:10px;padding-right:10px;position:relative;bottom:-7px}.titletext{color:#000;font-size:22px}.graytext{color:#8b8b8b}.subtitle{color:#5cacee;text-align:center}.rightbtn{border-right:10px;float:right;margin-left:10px}.heading{margin-top:-10px;margin-bottom:-10px}.centerText{text-align:center}.uploadstatusbox{color:#9c9c9c;height:48px;overflow:auto}html{height:100%}body{height:100%}.loading{line-height:56px;color:#545454;padding-left:60px;font-size:15px;background:#fff url(loading.gif) no-repeat 10px 50%;opacity:.7;-moz-border-radius:20px;-webkit-border-radius:20px;border-radius:20px;filter:alpha(opacity=70)}
@charset "UTF-8";.titlebox{height:30px;line-height:30px;padding-top:5px;padding-bottom:5px;padding-left:10px;padding-right:10px;position:relative;bottom:-7px}.titletext{color:#000;font-size:22px}.graytext{color:#8b8b8b}.subtitle{color:#5cacee;text-align:center}.rightbtn{border-right:10px;float:right;margin-left:10px}.heading{margin-top:-10px;margin-bottom:-10px}.centerText{text-align:center}.uploadstatusbox{color:#9c9c9c;height:48px;overflow:auto}html{height:100%}body{height:100%}.loading{line-height:56px;color:#545454;padding-left:60px;font-size:15px;background:#fff url(loading.gif) no-repeat 10px 50%;opacity:.7;-moz-border-radius:20px;-webkit-border-radius:20px;border-radius:20px;filter:alpha(opacity=70)}.wordbreak{word-break:break-all}

BIN
webContext/css/right.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 800 B

File diff suppressed because one or more lines are too long

View File

@ -56,16 +56,17 @@
<div class="panel-heading">
<div class="heading">
<div class="navbar-header">
<a href="javascript:void(0);" class="navbar-text" data-toggle="modal"
data-target="#folderInfoModal"><span id="folderIconSpan"
class="glyphicon glyphicon-folder-close"></span>&ensp;&ensp;<span
<a href="javascript:void(0);" class="navbar-text"
data-toggle="modal" data-target="#folderInfoModal"><span
id="folderIconSpan" class="glyphicon glyphicon-folder-close"></span>&ensp;&ensp;<span
id="currentFolderName"></span></a>
</div>
<div class="collapse navbar-collapse">
<ul class="nav navbar-nav">
<li class="dropdown"><a href="javascript:void(0);" class="dropdown-toggle"
data-toggle="dropdown" role="button" aria-haspopup="true"
aria-expanded="false">上一级 <span class="caret"></span></a>
<li class="dropdown"><a href="javascript:void(0);"
class="dropdown-toggle" data-toggle="dropdown" role="button"
aria-haspopup="true" aria-expanded="false">上一级 <span
class="caret"></span></a>
<ul class="dropdown-menu" id="parentFolderList"></ul></li>
</ul>
<form class="navbar-form navbar-left">
@ -73,7 +74,8 @@
<input id="sreachKeyWordIn" type="text" class="form-control"
placeholder="请输入文件名...">
</div>
<button type="button" class="btn btn-default" onclick="doSearchFile()">搜索</button>
<button type="button" class="btn btn-default"
onclick="doSearchFile()">搜索</button>
</form>
<ul class="nav navbar-nav navbar-right">
<li id="packageDownloadBox"></li>
@ -134,7 +136,7 @@
<form class="form-horizontal">
<div class="form-group" id="accountidbox">
<label for="accountid" id="accountidtitle"
class="col-sm-3 control-label">账户</label>
class="col-sm-3 control-label">账户:</label>
<div class="col-sm-9">
<input type="text" class="form-control" id="accountid"
placeholder="请输入账户……">
@ -142,7 +144,7 @@
</div>
<div class="form-group" id="accountpwdbox">
<label for="accountpwd" id="accountpwdtitle"
class="col-sm-3 control-label">密码</label>
class="col-sm-3 control-label">密码:</label>
<div class="col-sm-9">
<input type="password" class="form-control" id="accountpwd"
placeholder="请输入密码……">
@ -359,8 +361,8 @@
</div>
<!-- end 上传文件 -->
<!-- 下载提示框 -->
<div class="modal fade bs-example-modal-sm" id="downloadModal"
tabindex="-1" role="dialog" aria-labelledby="downloadModelTitle">
<div class="modal fade" id="downloadModal" tabindex="-1" role="dialog"
aria-labelledby="downloadModelTitle">
<div class="modal-dialog modal-sm" role="document">
<div class="modal-content">
<div class="modal-header">
@ -373,7 +375,12 @@
</h4>
</div>
<div class="modal-body">
<h5 id="downloadFileName">提示:您确认要下载文件:[]么?</h5>
<h5 id="downloadFileName" class="wordbreak">提示:您确认要下载文件:[]么?</h5>
<a href="javascript:void(0);"
onclick="$('#downloadURLCollapse').collapse('toggle')">下载链接+</a>
<div class="collapse" id="downloadURLCollapse">
<div id="downloadHrefBox" class="well well-sm wordbreak"></div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">取消</button>
@ -581,8 +588,9 @@
<script type="text/javascript" src="js/jsencrypt.min.js"></script>
<!-- 图片查看器 -->
<script type="text/javascript" src="js/viewer.min.js"></script>
<script type="text/javascript" src="js/jquery-viewer.min.js"></script>
<!-- 音乐播放器 -->
<script type="text/javascript" src="js/APlayer.min.js"></script>
<!-- 页面操作定义 -->
<script type="text/javascript" src="js/home.min.js"></script>
<script type="text/javascript" src="js/home.js"></script>
</html>

View File

@ -2,6 +2,7 @@
* home.js kiftd主页面操作定义 by 青阳龙野 该文件为home.html的操作定义文件包含了kiftd页面上的主要操作实现
*/
//所用val名称列表注意不要冲突其中一些参数能够设定界面行为。
var locationpath = "root";// 记录当前文件路径
var parentpath = "null";// 记录当前文件路径的父级目录
var ap;// 音乐播放器对象
@ -13,7 +14,14 @@ var checkedMovefiles;// 移动文件的存储列表
var constraintLevel;// 当前文件夹限制等级
var account;// 用户账户
var isUpLoading=false;// 是否正在执行其他上传操作
var xhr;// 文件上传请求对象
var viewerPageSize = 15; // 显示图片页的最大长度,注意最好是奇数
var viewer; // viewer对象用于预览图片功能
var viewerPageIndex; // 分页预览图片——已浏览图片页号
var viewerTotal; // 分页预览图片——总页码数
var pvl;//预览图片列表的JSON格式对象
//界面功能方法定义
// 页面初始化
$(function() {
getServerOS();// 得到服务器操作系统信息
@ -219,6 +227,10 @@ $(function() {
$("#fim_folderCreationDate").text(f.folderCreationDate);
$("#fim_statistics").text("共包含 "+folderView.folderList.length+" 个文件夹, "+folderView.fileList.length+" 个文件。");
});
// 关闭下载提示模态框自动隐藏下载链接
$('#downloadModal').on('hidden.bs.modal', function(e) {
$('#downloadURLCollapse').collapse('hide');
});
});
// 全局请求失败提示
@ -477,7 +489,7 @@ function showAccountView(folderView) {
// 说明用户未登录,显示登录按钮
$("#tb")
.append(
"<button class='btn btn-link rightbtn' data-toggle='modal' data-target='#loginModal'>登入<span class='glyphicon glyphicon-user' aria-hidden='true'></span></button>");
"<button class='btn btn-link rightbtn' data-toggle='modal' data-target='#loginModal'>登入 <span class='glyphicon glyphicon-user' aria-hidden='true'></span></button>");
}
var authList = folderView.authList;
// 对操作菜单进行初始化,根据权限显示可操作的按钮(并非约束)。
@ -621,9 +633,13 @@ function showFolderTable(folderView) {
var fileRow = "<tr onclick='checkfile(" + '"'
+ fi.fileId + '"' + ")' id='" + fi.fileId
+ "' class='filerow'><td>" + fi.fileName
+ "</td><td>" + fi.fileCreationDate
+ "</td><td>" + fi.fileSize + "MB</td><td>"
+ fi.fileCreator + "</td><td>";
+ "</td><td>" + fi.fileCreationDate;
if(fi.fileSize=="0"){
fileRow=fileRow+"</td><td>&lt;1MB</td><td>";
}else{
fileRow=fileRow+"</td><td>" + fi.fileSize + "MB</td><td>";
}
fileRow=fileRow + fi.fileCreator + "</td><td>";
if (aL) {
fileRow = fileRow
+ "<button onclick='showDownloadModel("
@ -646,7 +662,7 @@ function showFolderTable(folderView) {
fileRow = fileRow
+ "<button onclick='pdfView("
+ '"'
+ fi.fileId
+ fi.filePath
+ '"'
+ ")' class='btn btn-link btn-xs'><span class='glyphicon glyphicon-eye-open'></span> 预览</button>";
} else if (getSuffix(fi.fileName) == "jpg"
@ -1002,8 +1018,6 @@ function checkUploadFile() {
}
}
var xhr;
// 执行文件上传并实现上传进度显示
function doupload(count) {
var fcount = fs.length;
@ -1098,6 +1112,7 @@ function showUploadFileAlert(txt) {
function showDownloadModel(fileId, fileName) {
$("#downloadModal").modal('toggle');
$("#downloadFileName").text("提示:您确认要下载文件:[" + fileName + "]么?");
$("#downloadHrefBox").html("<a href='"+window.location.protocol+"//"+window.location.host+"/homeController/downloadFile.do?fileId="+fileId+"'>"+window.location.protocol+"//"+window.location.host+"/homeController/downloadFile.do?fileId="+fileId+"</a>");
$("#downloadFileBox")
.html(
"<button id='dlmbutton' type='button' class='btn btn-primary' onclick='dodownload("
@ -1264,8 +1279,8 @@ function playVideo(fileId) {
}
// 预览PDF文档
function pdfView(fileId) {
window.open("homeController/pdfView.do?fileId=" + fileId);
function pdfView(filePath) {
window.open("/pdfview/web/viewer.html?file=/fileblocks/" + filePath);
}
// 查看图片
@ -1279,29 +1294,23 @@ function showPicture(fileId) {
dataType : "text",
success : function(result) {
if (result != "ERROR") {
var pvl = eval("(" + result + ")");
pvl = eval("(" + result + ")");
// TODO 整合viewer.js插件
var imageslist = document.createElement("ul");
$.each(pvl.pictureViewList, function(n, val) {
var image = new Image();
// 判断直接显示原图还是请求压缩流
if(val.filePath.startsWith("homeController")){
image.src = val.filePath;
}else{
image.src = "fileblocks/"+val.filePath;
if(pvl.pictureViewList.length <= viewerPageSize) {
createViewList();// 以全列方式显示图片列表
} else {
// 以分页方式显示图片列表
viewerPageIndex = Math.ceil((pvl.index + 1) / viewerPageSize);
viewerTotal = Math.ceil(pvl.pictureViewList.length / viewerPageSize);
createViewListByPage();
var innerIndex = pvl.index - ((viewerPageIndex - 1) * viewerPageSize);
if(viewerPageIndex > 1) {
innerIndex++;
}
image.alt = val.fileName;
var imagerow = document.createElement("li");
imagerow.appendChild(image);
imageslist.appendChild(imagerow);
});
viewer = new Viewer(imageslist, {
hidden : function() {
viewer.destroy();
}
});
viewer.view(pvl.index);
viewer.show();
viewer.viewer('view', innerIndex);
viewer.viewer('show', true);
}
// end
} else {
alert("错误:无法定位要预览的文件或该操作未被授权。");
}
@ -1312,6 +1321,83 @@ function showPicture(fileId) {
});
}
// 用于创建并显示小于2*limit+1长度的图片列表
function createViewList() {
if(viewer == null) {
var images = document.createElement("ul");
for(var i = 0; i < pvl.pictureViewList.length; i++) {
if(pvl.pictureViewList[i].filePath.startsWith("homeController")){
$(images).append("<li><img src='" + pvl.pictureViewList[i].filePath + "' alt='" + pvl.pictureViewList[i].fileName + "' /></li>");
}else{
$(images).append("<li><img src='fileblocks/" + pvl.pictureViewList[i].filePath + "' alt='" + pvl.pictureViewList[i].fileName + "' /></li>");
}
}
viewer = $(images);
viewer.viewer({
loop: false,
hidden: function() {
viewer.data('viewer').destroy();
viewer = null;
}
});
}
viewer.viewer('view', pvl.index);
viewer.viewer('show', true);
}
// 用于创建长于2*limit+1长度的图片分页列表
function createViewListByPage() {
// 初始化分页结构
if(viewer == null) {
var images = document.createElement("ul");
var startIndex = (viewerPageIndex - 1) * viewerPageSize;
if(viewerPageIndex > 1) {
$(images).append("<li><img src='css/left.png' alt='上一页' /></li>");
}
for(var i = 0; i < viewerPageSize && i < (pvl.pictureViewList.length - (viewerPageIndex - 1) * viewerPageSize); i++) {
if(pvl.pictureViewList[i].filePath.startsWith("homeController")){
$(images).append("<li><img src='" + pvl.pictureViewList[startIndex+i].filePath + "' alt='" + pvl.pictureViewList[startIndex+i].fileName + "' /></li>");
}else{
$(images).append("<li><img src='fileblocks/" + pvl.pictureViewList[startIndex+i].filePath + "' alt='" + pvl.pictureViewList[startIndex+i].fileName + "' /></li>");
}
}
if(viewerPageIndex < viewerTotal) {
$(images).append("<li><img src='css/right.png' alt='下一页' /></li>");
}
viewer = $(images);
viewer.viewer({
loop: false,
view: function(event) {
// 点击的计数为event.detail.index;
if(event.detail.index == 0 && viewerPageIndex != 1) {
viewerPageIndex--;
viewer.data('viewer').destroy();
viewer.empty();
viewer = null;
createViewListByPage();
if(viewerPageIndex > 1){
viewer.viewer('view',viewerPageSize);
}else{
viewer.viewer('view',viewerPageSize - 1);
}
} else if(event.detail.index == viewerPageSize + 1 || (event.detail.index == viewerPageSize && viewerPageIndex == 1)) {
viewerPageIndex++;
viewer.data('viewer').destroy();
viewer.empty();
viewer = null;
createViewListByPage();
viewer.viewer('view',1);
}
},
hidden: function() {
viewer.data('viewer').destroy();
viewer.empty();
viewer = null;
}
});
}
}
// 选中某一行文件如果使用Shift点击则为多选
function checkfile(fileId) {
if (!window.event.shiftKey) {

File diff suppressed because one or more lines are too long

10
webContext/js/jquery-viewer.min.js vendored Normal file
View File

@ -0,0 +1,10 @@
/*!
* jQuery Viewer v1.0.0
* https://github.com/fengyuanchen/jquery-viewer
*
* Copyright (c) 2018 Chen Fengyuan
* Released under the MIT license
*
* Date: 2018-04-01T05:58:29.617Z
*/
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(require("jquery"),require("viewerjs")):"function"==typeof define&&define.amd?define(["jquery","viewerjs"],t):t(e.jQuery,e.Viewer)}(this,function(d,v){"use strict";if(d=d&&d.hasOwnProperty("default")?d.default:d,v=v&&v.hasOwnProperty("default")?v.default:v,d.fn){var e=d.fn.viewer,c="viewer";d.fn.viewer=function(o){for(var e=arguments.length,u=Array(1<e?e-1:0),t=1;t<e;t++)u[t-1]=arguments[t];var s=void 0;return this.each(function(e,t){var r=d(t),i="destroy"===o,n=r.data(c);if(!n){if(i)return;var f=d.extend({},r.data(),d.isPlainObject(o)&&o);n=new v(t,f),r.data(c,n)}if("string"==typeof o){var a=n[o];d.isFunction(a)&&((s=a.apply(n,u))===n&&(s=void 0),i&&r.removeData(c))}}),void 0!==s?s:this},d.fn.viewer.Constructor=v,d.fn.viewer.setDefaults=v.setDefaults,d.fn.viewer.noConflict=function(){return d.fn.viewer=e,this}}});

File diff suppressed because one or more lines are too long

View File

@ -1,6 +1,6 @@
kiftd 使用许可
Copyright (c) 2018 青阳龙野 <kohgylw@163.com> (phone:15928143814)
Copyright (c) 2018 青阳龙野 <kohgylw@163.com> (phone:159****3814)
使用kiftd软件或查看kiftd源代码代表您接收如下条款
1任何组织或个人均能够自由、无偿地获得kiftd软件及其源代码的原版拷贝并对其进行无限制地进行使用——无论是商业的还是非商业的。