web网盘功能实现

3.新建文件夹的功能

 
//新建文件夹
function newDir(){
var name = prompt("请输入文件夹名",'');
if(name!==null&&name!=""){
var dirName = name;
var path = "${path}";
var data = {
path : path,
name : dirName
};
$.ajax({
url:"createDir.action",
type:"post",
data:data,
success : function(s){
if(s.success){
location.reload();
}else{
alert(s.msg);
}
}
});
}
}
 
/**
* 创建文件夹
*/
@RequestMapping("/createDir")
@ResponseBody
public Object createDir(HttpServletRequest request,HttpServletResponse response,
String name,String path) {
User user = getSessionUser(request);
boolean flag = false;
SwiftDFS swiftDFS = new SwiftDFS();
flag = swiftDFS.createDir(user.getUsername(), path+name+"/");
return new MessageBean(flag,flag?Constants.SUCCESS_3:Constants.ERROR_4);
}
 
 
4.上传文件的功能
 
//创建文件
function createfile(fileName, filePath) {
var data = {
path : "${path}",
name : fileName,
filePath : filePath
};
alert("上传成功");
$.ajax({
url:"createFile.action",
type : "post",
data : data,
success: function(s){
location.reload();
}
});
 
/**
* 创建文件
*/
@RequestMapping("/createFile")
@ResponseBody
public Object createFile(HttpServletRequest request,HttpServletResponse response,
String path,String name,String filePath) {
User user = getSessionUser(request);
String upth = request.getSession().getServletContext().getRealPath("/");
boolean flag = false;
SwiftDFS swiftDFS = new SwiftDFS();
flag = swiftDFS.createFile(user.getUsername(), path, name, upth+filePath);
return new MessageBean(flag,flag?Constants.SUCCESS_4:Constants.ERROR_5);
}
 
 
5.删除文件至垃圾箱 6.多个文件的删除
1
 
//删除文件ljmdelete
function deletefile() {
if (confirm("你确定要删除所选文件吗?")) {
var objTable = document.getElementById("tab");
var data = '[';
for (var y = 0; y < objTable.rows.length; y++) {
var checkbox = objTable.rows[y].childNodes[1].childNodes[0].childNodes[5];
if (checkbox.checked == true) {
var path = checkbox.parentNode.parentNode.parentNode.childNodes[5].innerHTML;
path = decodeURIComponent(path);
var td3 = checkbox.parentNode.parentNode.parentNode.childNodes[3];
var imgpic = td3.getElementsByTagName("img");
if (imgpic.length > 0) {
isDir = true;
var names = td3.childNodes[0].childNodes[1].childNodes[0];
var name = $(names).val();
} else {
isDir = false;
var names = td3.childNodes[0].childNodes[0];
var name = $(names).text();
}
data += '{"path":"' + path + '","name":"' + name
+ '","isDir":"' + isDir + '"}';
if (y < (objTable.rows.length - 1)) {
data += ',';
}
}
}
data += ']';
var data = eval('(' + data + ')');
$.ajax({
url : "deletefiles.action",
type : "post",
contentType : "application/json; charset=utf-8",
data : JSON.stringify(data),
success : function(s) {
if (s.success) {
alert(s.msg)
}
location.reload();
}
});
}
}
 
5.删除文件至垃圾箱 6.多个文件的删除
2
 
先对html中数据挂id
<c:forEach var="fb" items="${list}" varStatus="num">
<input type="checkbox" name='check' id="checkbox${num.count}" class="main-tabinput" onclick="show()">
<td id="td3${num.count}">
<span style="display: block" id="name${num.count}">
<input name="objimg" type="text" style="display: none" value="${fb.name}" id="dirName${num.count}">
<td id="filePath${num.count}" class="hide table-fileposition table-path" >${fb.path}</td>
 
 
//显示重命名、下载、删除、移动、复制选项
function show(){
var objTable = document.getElementById("tab");
for(var i=0;i<objTable.rows.length;i++){
var j = i+1;
var checkbox = document.getElementById("checkbox"+j);
if(checkbox.checked == true){
document.getElementById("delete").style.display = "block";
document.getElementById("download").style.display = "block";
document.getElementById("rename").style.display = "block";
document.getElementById("move").style.display = "block";
document.getElementById("copy").style.display = "block";
document.getElementById("selectColumn").style.display = "block";
 
break;
}else{
document.getElementById("delete").style.display = "none";
document.getElementById("download").style.display = "none";
document.getElementById("rename").style.display = "none";
document.getElementById("move").style.display = "none";
document.getElementById("copy").style.display = "none";
document.getElementById("selectColumn").style.display = "none";
}
}
}
 
//删除文件
function deletefile(){
if(confirm("你确定要删除所选文件吗?")){
var objTable = document.getElementById("tab");
data = '[';
for(var y = 0;y<objTable.rows.length;y++){
var j = y+1;
var checkbox = document.getElementById("checkbox"+j);
if(checkbox.checked == true){
var path = document.getElementById("filePath"+j).innerHTML;
path = decodeURIComponent(path);
var td3 = document.getElementById("td3"+j);
var imgpic = td3.getElementsByTagName("img");
if(imgpic.length > 0){
var isDir = true;
var names = document.getElementById("dirName"+j);
var name = $(names).val();
}else{
var isDir = false;
var names = document.getElementById("name"+j);
var name = $(names).text();
}
}
data += '{"path":"' + path + '","name":"' + name+ '","isDir":"' + isDir + '"}';
if(y<(objTable.rows.length-1)){
data += ',';
}
}
}
data += ']';
var data = eval('('+data+')');
$.ajax({
url : "deletefiles.action",
type : "post",
contentType : "application/json; charset=utf-8",
data : JSON.stringify(data),
success : function(s) {
if (s.success) {
alert(s.msg);
}
location.reload();
}
});
}
 
/**
* 删除文件
*/
@RequestMapping("/deletefiles")
@ResponseBody
public Object deleteFiles(HttpServletRequest request,HttpServletResponse response,
@RequestBody List<Map<String, Object>> list){
User user = getSessionUser(request);
SwiftDFS swiftDFS = new SwiftDFS();
for (Map<String,Object> map : list) {
boolean isDir = Boolean.getBoolean(map.get("isDir").toString());
swiftDFS.deleteFile(user.getUsername(), map.get("path").toString(), map.get("name").toString(), isDir);
}
return new MessageBean(true,Constants.SUCCESS_5);
}
 
7.清空垃圾箱
 
//清空功能
function deleteallgarbagefile() {
if (confirm("你确定要彻底删除所选文件吗?")) {
$.ajax({
url : "deleteallgarbagefiles.action",
type : "post",
success : function(s) {
if (s.success) {
alert(s.msg)
}
location.reload();
}
});
}
}
 
/**
* 清空垃圾箱的文件
*
* @param request
* @param response
* @param name
*/
@RequestMapping("/deleteallgarbagefiles")
@ResponseBody
public Object deleteallgarbagefile(HttpServletRequest request,
HttpServletResponse response) {
User user = getSessionUser(request);
SwiftDFS swiftDFS = new SwiftDFS();
swiftDFS.deleteAllGarbageFile(user.getUsername());
return new MessageBean(true, Constants.SUCCESS_5);
}
 
8.垃圾箱内多个文件还原
1
 
//还原文件
function backFiles() {
if (confirm("你确定要恢复所选文件吗?")) {
var objTable = document.getElementById("tab");
var data = '[';
for (var y = 0; y < objTable.rows.length; y++) {
var checkbox = objTable.rows[y].childNodes[1].childNodes[0].childNodes[5];
if (checkbox.checked == true) {
var path = checkbox.parentNode.parentNode.parentNode.childNodes[5].innerHTML;
path = decodeURIComponent(path);
var td3 = checkbox.parentNode.parentNode.parentNode.childNodes[3];
var imgpic = td3.getElementsByTagName("img");
if (imgpic.length > 0) {
var isDir = true;
var names = td3.childNodes[0].childNodes[1].childNodes[0];
var name = $(names).val();
} else {
var isDir = false;
var names = td3.childNodes[0].childNodes[0];
var name = $(names).text();
}
data += '{"path":"' + path + '","name":"' + name
+ '","isDir":"' + isDir + '"}';
if (y < (objTable.rows.length - 1)) {
data += ',';
}
}
}
data += ']';
var data = eval('(' + data + ')');
$.ajax({
url : "backFiles.action",
type : "post",
contentType : "application/json;charset=utf-8",
data : JSON.stringify(data),
success : function(s) {
if (s.success) {
alert(s.msg);
}
location.reload();
}
});
}
}
 
/**
* 还原文件
*/
@RequestMapping("/backFile")
@ResponseBody
public Object backFile(HttpServletRequest request,HttpServletResponse response,
@RequestBody List<Map<String,Object>> list){
User user = getSessionUser(request);
SwiftDFS swiftDFS = new SwiftDFS();
for(Map<String, Object> map : list){
boolean isDir = Boolean.getBoolean(map.get("isDir").toString());
swiftDFS.backgarbagefile(user.getUsername(), map.get("path").toString(), isDir);
}
return new MessageBean(true,"还原成功");
}
 
 
8.垃圾箱内多个文件还原
2
 
//还原文件
function backFile(){
if(confirm("确定还原选中文件吗?")){
var objTable = document.getElementById("tab");
var data = '[';
for(var y = 0;y<objTable.rows.length;y++){
var j = y+1;
var checkbox = document.getElementById("checkbox"+j);
if(checkbox.checked == true){
var path = document.getElementById("filePath"+j).innerHTML;
path = decodeURIComponent(path);
var td3 = document.getElementById("td3"+j);
var imgpic = td3.getElementsByTagName("img");
if(imgpic.length>0){
var isDir = true;
var names = document.getElementById("dirName"+j);
var name = $(names).val();
}else{
var isDir = false;
var names = document.getElementById("name"+j);
var name = $(names).text();
}
data += '{"path":"' + path + '","name":"' + name+ '","isDir":"' + isDir + '"}';
if(y<(objTable.rows.length-1)){
data += ',';
}
}
}
data += ']';
var data = eval('('+data+')');
$.ajax({
url:"backFile.action",
type:"post",
contentType:"application/json;charset=utf-8",
data : JSON.stringify(data),
success:function(s){
if(s.success){
alert("还原成功");
}else{
alert("还原失败");
}
location.reload();
}
});
}
}
 
/**
* 还原文件
*/
@RequestMapping("/backFile")
@ResponseBody
public Object backFile(HttpServletRequest request,HttpServletResponse response,
@RequestBody List<Map<String,Object>> list){
User user = getSessionUser(request);
SwiftDFS swiftDFS = new SwiftDFS();
for(Map<String, Object> map : list){
boolean isDir = Boolean.getBoolean(map.get("isDir").toString());
swiftDFS.backgarbagefile(user.getUsername(), map.get("path").toString(), isDir);
}
return new MessageBean(true,"还原成功");
}
 
 
9.我的垃圾箱功能
 
<a class="list-group-item" href="garbage.action"><span class="glyphicon glyphicon-trash left-icon"></span>&nbsp;&nbsp;垃圾箱</a>
 
/**
* 取得垃圾箱的文件
*/
@RequestMapping("/garbage")
public ModelAndView garbage(HttpServletRequest request,
HttpServletResponse response){
ModelAndView view = new ModelAndView();
User user = getSessionUser(request);
List list = swiftStorageService.getAllStoredList(Constants.GARBAGE_PREFIX+user.getUsername(), "");
view.addObject("list",list);
view.setViewName("/garbage");
return view;
}
 
10.普通视图下的我的视频功能 11.普通视图下的我的文档功能 12.普通视图下的我的图片功能 16.我的其他文件的功能
 
<!-- 文件分类 -->
<a class="list-group-item " id="type" href="category.action?type=2" ><span
class="glyphicon glyphicon-file left-icon"> </span>&nbsp;&nbsp;我的文档</a>
<a class="list-group-item " href="category.action?type=1" ><span
class="glyphicon glyphicon-picture left-icon"></span>&nbsp;&nbsp;我的图片</a>
<a class="list-group-item " id="type" href="category.action?type=3" ><span
class="glyphicon glyphicon-film left-icon"></span>&nbsp;&nbsp;我的视频</a>
<a class="list-group-item " id="type" href="category.action?type=4" ><span
class="glyphicon glyphicon-music left-icon"></span>&nbsp;&nbsp;我的音乐</a>
<a class="list-group-item" id="type" href="category.action?type=5" ><span
class="glyphicon glyphicon-inbox left-icon"></span>&nbsp;&nbsp;其他</a>
 
/**
* 取得特定类型文件
* 1 图片格式 2 文档格式 3 视频格式 4 音乐格式 5 其他
*/
@RequestMapping("/category")
public ModelAndView category(HttpServletRequest request,HttpServletResponse response,
int type){
ModelAndView view = new ModelAndView();
User user = getSessionUser(request);
SwiftDFS swiftDFS = new SwiftDFS();
List list = swiftDFS.getCategoryStoredList(user.getUsername(), type);
view.addObject("path",type);
view.addObject("list",list);
view.addObject("search","true");
view.setViewName("/main");
return view;
}
 
13.缩略图下的我的视频功能 14.缩略图下的我的文档功能 15.缩略图下的我的图片功能
 
<!-- 文件分类缩略图 -->
<div class="col-md-12" style="top: 2px; z-index: 99999999;">
<div class="btn-toolbar main-btnbar pull-right"
style="position: fixed; right: 21px; margin-top: 1px">
<div class="btn-group" id="searchnone" style="display: block">
<a class="btn btn-default active"
href="home.action?path=${path}" id="btn"><span
class="glyphicon glyphicon-th-list"></span></a> <a
class="btn btn-default "
id="btn1" href="gridview.action?path=${path }"><span class="glyphicon glyphicon-th-large" ></span></a>
</div>
</div>
</div>
 
/**
* 取得主页缩略图
*/
@RequestMapping("/gridview")
public ModelAndView gridview(HttpServletRequest request,HttpServletResponse response,String path){
ModelAndView view = new ModelAndView();
User user = getSessionUser(request);
path = UtilTools.converStr(path);
List list = swiftStorageService.getAllStoredList(user.getUsername(), path);
view.addObject("path",path);
view.addObject("list",list);
view.setViewName("/gridview");
return view;
}
 
<style>
.zzsc {
margin-top:10px;
height:150px;
}
.zzsc img{
width:100px;
height:100px;
}
</style>
 
<!-- 缩略图 -->
<tbody id="tab">
<c:forEach var="fb" items="${list}" varStatus="num">
<tr>
<div class=" col-lg-2 ">
<div class="zzsc" >
 
<c:choose>
<c:when test="${fb.isdirectory == true}">
<a href="gridview.action?path=${fb.path}"><img
src="assets/images/2.png" alt="No image" class="gridview-img"></a>
</c:when>
<c:when test="${fn:endsWith(fb.name, '.doc')}">
<img src="assets/images/doc.jpg" alt="NO image"
class="gridview-img">
</c:when>
<c:when test="${fn:endsWith(fb.name, '.docx')}">
<img src="assets/images/doc.jpg" alt="NO image"
class="gridview-img">
</c:when>
<c:when test="${fn:endsWith(fb.name, '.ppt')}">
<img src="assets/images/ppt.jpg" alt="NO image"
class="gridview-img">
</c:when>
<c:when test="${fn:endsWith(fb.name, '.ppt')}">
<img src="assets/images/ppt.jpg" alt="NO image"
class="gridview-img">
</c:when>
<c:when test="${fn:endsWith(fb.name, '.xls')}">
<img src="assets/images/Excel.png" alt="NO image"
class="gridview-img">
</c:when>
<c:when test="${fn:endsWith(fb.name, '.xlsx')}">
<img src="assets/images/Excel.png" alt="NO image"
class="gridview-img">
</c:when>
<c:when test="${fn:endsWith(fb.name, '.txt')}">
<img src="assets/images/txt.jpg" alt="NO image"
class="gridview-img">
</c:when>
<c:when test="${fn:endsWith(fb.name, '.pdf')}">
<img src="assets/images/pdf.png" alt="NO image"
class="gridview-img">
</c:when>
<c:when test="${fn:endsWith(fb.name, '.xml')}">
<img src="assets/images/xml.jpg" alt="NO image"
class="gridview-img">
</c:when>
<c:when test="${fn:endsWith(fb.name, '.avi')}">
<img src="assets/images/video.jpg" alt="NO image"
class="gridview-img">
</c:when>
<c:when test="${fn:endsWith(fb.name, '.wmv')}">
<img src="assets/images/video.jpg" alt="NO image"
class="gridview-img">
</c:when>
<c:when test="${fn:endsWith(fb.name, '.rmvb')}">
<img src="assets/images/video.jpg" alt="NO image"
class="gridview-img">
</c:when>
<c:when test="${fn:endsWith(fb.name, '.rm')}">
<img src="assets/images/video.jpg" alt="NO image"
class="gridview-img">
</c:when>
<c:when test="${fn:endsWith(fb.name, '.mp4')}">
<img src="assets/images/video.jpg" alt="NO image"
class="gridview-img">
</c:when>
<c:when test="${fn:endsWith(fb.name, '.mp3')}">
<img src="assets/images/video.jpg" alt="NO image"
class="gridview-img">
</c:when>
<c:when test="${fn:endsWith(fb.name, '.mpg')}">
<img src="assets/images/video.jpg" alt="NO image"
class="gridview-img">
</c:when>
<c:when test="${fn:endsWith(fb.name, '.mkv')}">
<img src="assets/images/video.jpg" alt="NO image"
class="gridview-img">
</c:when>
<c:when test="${fn:endsWith(fb.name, '.swf')}">
<img src="assets/images/video.jpg" alt="NO image"
class="gridview-img">
</c:when>
<c:when test="${fn:endsWith(fb.name, '.flv')}">
<img src="assets/images/video.jpg" alt="NO image"
class="gridview-img">
</c:when>
<c:when test="${fn:endsWith(fb.name, '.asf')}">
<img src="assets/images/video.jpg" alt="NO image"
class="gridview-img">
</c:when>
<c:when test="${fn:endsWith(fb.name, '.mov')}">
<img src="assets/images/video.jpg" alt="NO image"
class="gridview-img">
</c:when>
<c:otherwise>
<img src="${fb.filepath}" alt="NO image"
class="img gridview-img" id="img${status.count}">
</c:otherwise>
</c:choose>
<div class="text">
<input type="checkbox" name='check' id="checkbox${num.count}"
class="main-tabinput" onclick="show()">
<c:if test="${fb.isdirectory == true}">
<a href="home.action?path=${fb.path}"><input
name="objimg" type="text" style="display: none"
value="${fb.name}">
</c:if>${fb.name}<c:if test="${fb.isdirectory == true}">
</a>
</c:if>
</div>
 
</div>
</div>
</tr>
</c:forEach>
</tbody>
 
<!-- 缩略图导航 -->
<div class="list-group category" style="margin: 10px;">
<a class="list-group-item active" id="r_active" href="gridview.action"><span
class="glyphicon glyphicon-home left-icon"></span>&nbsp;&nbsp;全部文件</a>
<a class="list-group-item " id="type" href="categoryview.action?type=2" ><span
class="glyphicon glyphicon-file left-icon"> </span>&nbsp;&nbsp;我的文档</a>
<a class="list-group-item " href="categoryview.action?type=1" ><span
class="glyphicon glyphicon-picture left-icon"></span>&nbsp;&nbsp;我的图片</a>
<a class="list-group-item " id="type" href="categoryview.action?type=3" ><span
class="glyphicon glyphicon-film left-icon"></span>&nbsp;&nbsp;我的视频</a>
<a class="list-group-item " id="type" href="categoryview.action?type=4" ><span
class="glyphicon glyphicon-music left-icon"></span>&nbsp;&nbsp;我的音乐</a>
<a class="list-group-item" id="type" href="categoryview.action?type=5" ><span
class="glyphicon glyphicon-inbox left-icon"></span>&nbsp;&nbsp;其他</a>
<a class="list-group-item" ><span
class="glyphicon glyphicon-trash left-icon"></span>&nbsp;&nbsp;垃圾箱</a>
</div>
 
/**
* 取得特定类型文件的缩略图
*/
@RequestMapping("/categoryview")
public ModelAndView categoryview(HttpServletRequest request,HttpServletResponse response,String path,int type){
ModelAndView view = new ModelAndView();
User user = getSessionUser(request);
SwiftDFS swiftDFS = new SwiftDFS();
List list = swiftDFS.getCategoryStoredList(user.getUsername(), type);
view.addObject("list",list);
view.addObject("path",type);
view.setViewName("/gridview");
return view;
}
 
 
17.文件的重命名功能
1
//显示重命名框
function rename(){
var num = 0;
var objTable = document.getElementById("tab");
for(var y=0;y<objTable.rows.length;y++){
var j = y+1;
var checkbox = document.getElementById("checkbox"+j);
if(checkbox.checked == true){
if(num<1){
var renamebox = document.getElementById("renamebox"+j);
var renametxt = document.getElementById("name"+j);
renamebox.style.display = "block";
renametxt.style.display = "none";
num += 1;
}else{
alert('不能同时重命名两个或两个以上文件');
location.reload();
break;
}
}
}
}
//取消重命名
function cancel(){
var objTable = document.getElementById("tab");
for(var y = 0;y<objTable.rows.length;y++){
var j = y+1;
var checkbox = document.getElementById("checkbox"+j);
var renamebox = document.getElementById("renamebox"+j);
var renametxt = document.getElementById("name"+j);
 
renamebox.style.display = "none";
renametxt.style.display = "block";
}
}
 
 
//确认 重命名
function sure(){
var objTable = document.getElementById("tab");
for(var y = 0;y<objTable.rows.length;y++){
var j = y+1;
var checkbox = document.getElementById("checkbox"+j);
if(checkbox.checked == true){
var changename = document.getElementById("changename"+j);
var name = $(changename).val();
var path = document.getElementById("filePath"+j).innerHTML;
path = decodeURIComponent(path);
var imgpic = document.getElementById("td3"+j).getElementsByTagName("img");
if (imgpic.length > 0) {
var isDir = true;
} else {
var isDir = false;
}
data = {
"path":path,
"name":name,
"isDir":isDir
};
}
}
$.ajax({
url : "updatefile.action",
type : "post",
data : data,
success : function(s) {
if (s.success) {
alert(s.msg)
} else {
alert(s.msg);
}
location.reload();
}
});
}
 
/**
* 文件的重命名
*/
@RequestMapping("/updatefile")
@ResponseBody
public Object updatefile(HttpServletRequest request,HttpServletResponse response,
String path,String name,boolean isDir){
User user = getSessionUser(request);
SwiftDFS swiftDFS = new SwiftDFS();
boolean flag = false;
if(isDir){
flag = swiftDFS.renameDir(user.getUsername()+"/"+path, name);
}else{
flag = swiftDFS.renameFile(user.getUsername()+"/"+path, name);
}
return new MessageBean(flag,flag?Constants.SUCCESS_7:(isDir?Constants.ERROR_4:Constants.ERROR_5));
}
 
17.文件的重命名功能 18.文件夹的重命名
2
 
//显示重命名框
function rename() {
var num = 0;
var objTable = document.getElementById("tab");/* ljmcheck */
for (var y = 0; y < objTable.rows.length; y++) {
var checkbox = objTable.rows[y].childNodes[1].childNodes[0].childNodes[5];
if (checkbox.checked == true) {
if (num < 1) {
var renamebox = checkbox.parentNode.parentNode.parentNode.childNodes[3].childNodes[2];
var renametxt = checkbox.parentNode.parentNode.parentNode.childNodes[3].childNodes[0];
renametxt.style.display = "none";
renamebox.style.display = "block";
num += 1;
} else {
alert('不能同时重命名两个或两个以上文件');
location.reload();
break;
}
}
}
}
//取消重命名
function cancel() {
var objTable = document.getElementById("tab");
for (var y = 0; y < objTable.rows.length; y++) {
var checkbox = objTable.rows[y].childNodes[1].childNodes[0].childNodes[5];
var renamebox = checkbox.parentNode.parentNode.parentNode.childNodes[3].childNodes[2];
var renametxt = checkbox.parentNode.parentNode.parentNode.childNodes[3].childNodes[0];
renametxt.style.display = "block";
renamebox.style.display = "none";
}
}
 
//确认重命名
function sure() {
var objTable = document.getElementById("tab");
for (var y = 0; y < objTable.rows.length; y++) {
var checkbox = objTable.rows[y].childNodes[1].childNodes[0].childNodes[5];
if (checkbox.checked == true) {
var changename = checkbox.parentNode.parentNode.parentNode.childNodes[3].childNodes[2].childNodes[1]
var name = $(changename).val();
var path = checkbox.parentNode.parentNode.parentNode.childNodes[5].innerHTML;
path = decodeURIComponent(path);
var imgpic = checkbox.parentNode.parentNode.parentNode.childNodes[3]
.getElementsByTagName("img");
if (imgpic.length > 0) {
isDir = true;
} else {
isDir = false;
}
var data = {
"path" : path,
"name" : name,
"isDir" : isDir
};
}
}
$.ajax({
url : "updatefile.action",
type : "post",
data : data,
success : function(s) {
if (s.success) {
alert(s.msg)
} else {
alert(s.msg);
}
location.reload();
}
});
}
 
19.下载单个文件 20.下载多个文件
 
//下载文件
function downloadfile() {
//获取table
var objTable = document.getElementById("tab");
var data = '';
for (var y = 0; y < objTable.rows.length; y++) {
var checkbox = objTable.rows[y].childNodes[1].childNodes[0].childNodes[5];
if (checkbox.checked == true) {
var td3 = checkbox.parentNode.parentNode.parentNode.childNodes[3];
var imgpic = td3.getElementsByTagName("img");
if (imgpic.length > 0) {
alert("文件夹中内容暂时无法提供下载,请进入文件夹选择相应文件进行下载");
return;
} else {
var path = checkbox.parentNode.parentNode.parentNode.childNodes[5].innerHTML;
var nodename=checkbox.parentNode.parentNode.parentNode.childNodes[5].nodeName;
 
path = decodeURIComponent(path);//编码
var names = td3.childNodes[0].childNodes[0];
var name = names.innerHTML;
}
data += path + ",";
}
}
if (imgpic.length > 0) {
window.location.reload();
} else {
data = data.substring(0, data.length - 1);
//saas/cloudskill.doc,saas/insaas.txt
$("#download").attr("href", "download.action?paths=" + data);
}
}
 
/**
* 下载
*
*/
@RequestMapping("/download")
public void download(HttpServletRequest request,
HttpServletResponse response, String paths) {
SwiftDFS swiftdfs;
try {
String[] strs = paths.split(",");
int len = strs.length;
if (len < 1) {
return;
}
User user = getSessionUser(request);
response.setContentType("text/html;charset=UTF-8");
request.setCharacterEncoding("UTF-8");
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
String path = request.getSession().getServletContext()
.getRealPath("/");
String ctxPath = path + "export";
 
if (len == 1) {
String filePath = strs[0];// (String) map.get("path");
filePath = UtilTools.converStr(filePath);//将被编码的地址转换回UTF-8编码
byte[] b = new byte[] {};
 
swiftdfs = new SwiftDFS();
b = swiftdfs.downloadFile(user.getUsername()+"/"+filePath);
//将文件转为2进制编码
 
String[] strsss = filePath.split("/");
String filename = strsss[strsss.length - 1];//获得文件名
 
String downLoadPath = ctxPath + File.separator + filename;//获得全文件名
File downLoadFile = new File(downLoadPath);
downLoadFile.createNewFile();
//方法自动创建此抽象路径名的新文件,此方法返回true,如果指定的文件不存在,并已成功创建。如果该文件存在,该方法返回false。
BufferedOutputStream buffer = new BufferedOutputStream(
new FileOutputStream(downLoadFile));
// 创建一个向具有指定名称的文件中写入数据的输出文件流。
//downLoadFile为临时文件,向临时文件中写入数据
buffer.write(b);
buffer.flush();
buffer.close();
 
long fileLength = downLoadFile.length();
response.setContentType("application/octet-stream");
response.setHeader("Content-disposition","attachment; filename="+ new String(filename.getBytes("utf-8"),"ISO8859-1"));
response.setHeader("Content-Length", String.valueOf(fileLength));
bis = new BufferedInputStream(new FileInputStream(downLoadPath));//读临时文件
// 通过打开一个到实际文件的连接来创建一个FileInputStream,该文件通过文件系统中的路径名 name 指定。
bos = new BufferedOutputStream(response.getOutputStream());
byte[] buff = new byte[2048];
int bytesRead;
while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
bos.write(buff, 0, bytesRead);
}
bis.close();
bos.close();
 
downLoadFile.delete();
} else {//多文件
String[] strss = strs[0].split("/");
String temps = strss[strss.length - 1];
String[] strr = temps.split("\\.");
strr[0] = UtilTools.converStr(strr[0]);//将被编码数据规整编码
String rootname = ctxPath + File.separator + strr[0];//获得不带扩展名的全文件名
File rfile = new File(rootname);
rfile.mkdir();//就在rfile文件下创建了一个目录
for (int i = 0; i < len; i++) {
String filePath = strs[i];// (String) map.get("path");
filePath = UtilTools.converStr(filePath);//将被编码数据规整编码
byte[] b = new byte[] {};
 
swiftdfs = new SwiftDFS();
b = swiftdfs.downloadFile(user.getUsername()+"/"+filePath);
 
String[] strsss = filePath.split("/");//去除一次/确保一定为文件名
String filename = strsss[strsss.length - 1];//取最后一个数组(为文件名)
 
String dpath = rootname + File.separator + filename;//全文件名
File dfile = new File(dpath);
dfile.createNewFile();
BufferedOutputStream buff = new BufferedOutputStream(
new FileOutputStream(dfile));
buff.write(b);
buff.flush();
buff.close();
}
 
// 打包生成tar.gz文件
File tarfile = new File(rootname + ".zip");//创建无数据的zip文件
tarfile.createNewFile();
 
UtilTools.WriteToTarGzip(ctxPath + File.separator, strr[0],
strr[0] + ".zip");
 
// 下载tar.gz文件
String downLoadPath = rootname + ".zip";
String fp = "[批量下载]" + strr[0] + ".zip";
File downLoadFile = new File(downLoadPath);
long fileLength = downLoadFile.length();
response.setContentType("application/octet-stream");
response.setHeader("Content-disposition", "attachment; filename="+ new String(fp.getBytes("utf-8"), "ISO8859-1"));
response.setHeader("Content-Length", String.valueOf(fileLength));
bis = new BufferedInputStream(new FileInputStream(downLoadPath));
bos = new BufferedOutputStream(response.getOutputStream());
byte[] buff = new byte[2048];
int bytesRead;
while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
bos.write(buff, 0, bytesRead);
}
bis.close();
bos.close();
downLoadFile.delete();
UtilTools.deletefile(rootname);
} //else的结束符号
} catch (Exception e) {
e.printStackTrace();
}
}
 
21.文件夹的复制功能 22.文件的复制功能 23.实现多个文件夹复制的功能 24.实现多个文件复制的功能
 
 
<!-- 复制 -->
<div class="lb-copy" style="display: none;">
<div class="container pl-266">
<div class="move-box-head">
<p>复制文件</p>
<div class="lb-closeContainer">
<a class="lb-close move-lb-close" href="javascript:void(0);"> <span
class="glyphicon glyphicon-remove"></span>
</a>
</div>
</div>
<div class="move-box">
<div class="move-box-content">
<div class="move-box-position">
<div>
<p class="move-position-head">选择复制到的位置</p>
<div class="move-position-back">
<a href="javascript:void(0);" onclick="getdir1()">&laquo;返回</a>
</div>
</div>
<div class="move-copy-filder">
<div class="myDiv"></div>
</div>
</div>
<button class="btn btn-primary move-button" onclick="Copy();">提交</button>
</div>
</div>
</div>
</div>
 
 
 
<!-- 复制 -->
$(document).ready(
function() {
$("#move").click(function() {
$(".lb-move").fadeIn();
});
 
$(".lb-close").click(function() {
$(".lb-move").fadeOut();
$(".lb-copy").fadeOut();
});
 
$("#copy").click(function() {
$(".lb-copy").fadeIn();
 
});
});
 
 
 
//对话框显示相应文件夹
function getdir1() {
var tmp = '<div class="col-md-3" >'
+ '<input name="CheckS" type="radio" >'
+ ' <a href="javascript:void(0);" onclick="getdir()" >'
+ '<img src=assets/images/2.png style="height:61px;width:61px">'
+ ' <div >全部文件</div>'
+ '</a></div>';
$(".myDiv").html(tmp);
}
 
 
function getdir(path) {
var data = {
path : path
};
$.ajax({
url : "homedir.action",
type : "post",
data : data,
success : function(s) {
if (s.success) {
var array = s.other;
var tmp = '<div style="margin-top: 10px;">';
for (var i = 0; i < array.length; i++) {
if (array[i]['isdirectory'] == true) {
if (array[i]['haschild'] == true) {
tmp += ' <div class="col-md-3" ><input name="CheckS" type="radio" value=\''+array[i]['path']+'\'>'+
'<a href="javascript:void(0);" onclick="getdir(\'' + array[i]['path'] + '\')" >'
+'<img src=assets/images/2.png style="height:61px;width:61px"><div >'
+ array[i]['name']
+ '</div></a></div> ';
} else {
tmp += ' <div class="col-md-3" style="margin-bottom: 20px;">'
+ '<input name="CheckS" type="radio" value=\''+array[i]['path']+'\'><img src=assets/images/2.png style="height:61px;width:61px"><div >'
+ array[i]['name']
+ '</div></div> ';
}
}
}
tmp += '</div>';
$(".myDiv").html(tmp);
 
}
}
});
}
 
//复制
function Copy() {
var objTable = document.getElementById("tab");
var data = '[';
 
var input1 = document.getElementsByName("CheckS");
var newpath;
for (var i = 0; i < input1.length; i++) {
if (input1[i].checked == true) {
newpath = $(input1[i]).val();
}
}
if (newpath == undefined) {
alert("请选择复制位置");
return;
}
for (var y = 0; y < objTable.rows.length; y++) {
var checkbox = objTable.rows[y].childNodes[1].childNodes[0].childNodes[5];
if (checkbox.checked == true) {
var current_name = checkbox.parentNode.parentNode.parentNode.childNodes[3].childNodes[2].childNodes[1]
var name = $(current_name).val();
var path = checkbox.parentNode.parentNode.parentNode.childNodes[5].innerHTML
path = decodeURIComponent(path);
var img2 = checkbox.parentNode.parentNode.parentNode.childNodes[3].getElementsByTagName("img");
if (img2.length > 0) {
isDir = true;
} else {
isDir = false;
}
 
data += '{"path":"' + path + '","newpath":"' + newpath
+ '","isDir":"' + isDir + '","name":"' + name
+ '"}';
if (y < (objTable.rows.length - 1)) {
data += ',';
}
}
}
 
data += ']';
var data = eval('(' + data + ')');
$.ajax({
url : "copyfile.action",
type : "post",
contentType : "application/json; charset=utf-8",
data : JSON.stringify(data),
success : function(s) {
if (s.success) {
alert(s.msg)
} else {
alert(s.msg);
}
location.reload();
}
});
}
 
/**
* 复制文件
*
* @param request
* @param response
* @param name
*/
@RequestMapping("/copyfile")
@ResponseBody
public Object copyfile(HttpServletRequest request,
HttpServletResponse response,
@RequestBody List<Map<String, Object>> list) {
User user = getSessionUser(request);
boolean flag = false;
SwiftDFS swiftDFS = new SwiftDFS();
for(Map<String, Object> map : list) {
if(Boolean.getBoolean(map.get("isDir").toString())) {
swiftDFS.copyDir(user.getUsername()+"/"+map.get("path").toString(),user.getUsername()+"/"+map.get("newpath").toString());
}else {
flag = swiftDFS.copyFile(user.getUsername()+"/"+map.get("path").toString(), user.getUsername()+"/"+map.get("newpath").toString()+map.get("name").toString());
}
}
return new MessageBean(flag, flag ? Constants.SUCCESS_8
: Constants.ERROR_9);
}
 
 
25.文件的移动 26.文件夹移动的功能 27.实现多个文件夹移动的功能 28.实现多个文件移动的功能
 
<!-- 移动 -->
<div class="lb-move" style="display: none;">
<div class="container pl-266">
<div class="move-box-head">
<p>移动文件夹</p>
<div class="lb-closeContainer">
<a class="lb-close move-lb-close" href="javascript:void(0);"> <span
class="glyphicon glyphicon-remove"></span>
</a>
&llt;/div>
</div>
<div class="move-box">
<div class="move-box-content">
<div class="move-box-position">
<div>
<p class="move-position-head">选择移动到的位置</p>
<div class="move-position-back">
<a href="javascript:void(0);" onclick="getdir1()">&laquo;返回</a>
</div>
</div>
<div class="move-copy-filder">
<div class="myDiv"></div>
</div>
</div>
<button class="btn btn-primary move-button" onclick="Move();">提交</button>
</div>
</div>
</div>
</div>
 
//移动
function Move() {
var objTable = document.getElementById("tab");
var data = '[';
var input1 = document.getElementsByName("CheckS");
var newpath;
for (var i = 0; i < input1.length; i++) {
if (input1[i].checked == true) {
newpath = $(input1[i]).val();
}
}
if (newpath == undefined) {
alert("请选择移动位置");
return;
}
for (var y = 0; y < objTable.rows.length; y++) {
var checkbox = objTable.rows[y].childNodes[1].childNodes[0].childNodes[5];
if (checkbox.checked == true) {
var current_name = checkbox.parentNode.parentNode.parentNode.childNodes[3].childNodes[2].childNodes[1];
var name = $(current_name).val();
var path = checkbox.parentNode.parentNode.parentNode.childNodes[5].innerHTML;
path = decodeURIComponent(path);
var img2 = checkbox.parentNode.parentNode.parentNode.childNodes[3]
.getElementsByTagName("img");
if (img2.length > 0) {
isDir = true;
} else {
isDir = false;
}
data += '{"path":"' + path + '","newpath":"' + newpath
+ '","isDir":"' + isDir + '","name":"' + name
+ '"}';
if (y < (objTable.rows.length - 1)) {
data += ',';
}
}
 
}
 
data += ']';
var data = eval('(' + data + ')');
$.ajax({
url : "movefile.action",
type : "post",
contentType : "application/json; charset=utf-8",
data : JSON.stringify(data),
success : function(s) {
 
if (s.success) {
alert(s.msg);
 
} else {
alert(s.msg);
}
location.reload();
}
});
 
}
 
/**
* 移动文件
*
* @param request
* @param response
* @param name
*/
@RequestMapping("/movefile")
@ResponseBody
public Object movefile(HttpServletRequest request,
HttpServletResponse response,
@RequestBody List<Map<String, Object>> list) {
User user = getSessionUser(request);
boolean flag = false;
SwiftDFS swiftDFS = new SwiftDFS();
for(Map<String, Object> map : list) {
if(Boolean.getBoolean(map.get("isDir").toString())) {
swiftDFS.moveDir(user.getUsername()+"/"+map.get("path").toString(),user.getUsername()+"/"+map.get("newpath").toString());
}else {
flag = swiftDFS.moveFile(user.getUsername()+"/"+map.get("path").toString(), user.getUsername()+"/"+map.get("newpath").toString()+map.get("name").toString());
}
}
return new MessageBean(flag, flag ? Constants.SUCCESS_9
: Constants.ERROR_8);
}
 
 
30.搜索功能的实现
 
<!-- //seachfile()方法在js文件夹的common.js中 这个sb程序员 心里没点b数 乱放 害老子找这么久 -->
 
 
/**
* 搜索文件
*
* @param request
* @param response
* @param path
* @return
*/
@RequestMapping("/search")
public ModelAndView search(HttpServletRequest request,
HttpServletResponse response, String key) {
ModelAndView view = new ModelAndView();
User user = getSessionUser(request);
key = UtilTools.converStr(key);
SwiftDFS swiftDFS = new SwiftDFS();
List list = swiftDFS.searchFile(user.getUsername(), key);
view.addObject("list", list);
view.addObject("search", "true");
view.setViewName("/main");
return view;
}
 
31.用户密码修改
 
/**
* 密码管理
* @param request
* @param response
* @param email
* @param password
*/
@RequestMapping("/updateuserinfo")
@ResponseBody
public Object updateuserinfo(HttpServletRequest request, HttpServletResponse response,
String oldpassword,String newpassword) {
User user = getSessionUser(request);
String password = user.getPassword();
MD5 md5 = new MD5();
String inputstr = md5.getMD5ofStr(oldpassword);
if (!password.equals(inputstr))
{
return new MessageBean(false,Constants.ERROR_7);
}
else
{
user.setPassword(md5.getMD5ofStr(newpassword));
userService.update(user);
return new MessageBean(true,Constants.SUCCESS_6);
}
}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
posted @ 2020-10-17 09:48  Ideaway  阅读(560)  评论(0)    收藏  举报