struts2 上传 下载

package com.dynastarter.sc.file.action;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.apache.struts2.ServletActionContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import org.springside.modules.orm.Page;
import org.springside.modules.security.springsecurity.SpringSecurityUtils;

import com.dynastarter.sc.file.baseaction.BaseAction;
import com.dynastarter.sc.file.po.FileManager;
import com.dynastarter.sc.file.po.HistoryManager;
import com.dynastarter.sc.file.po.User;
import com.dynastarter.sc.file.service.FileManagerService;
import com.dynastarter.sc.file.service.HistoryManagerService;
import com.dynastarter.sc.file.service.UserService;


@Controller
@Scope("prototype")
public class DocumentManagerAction extends BaseAction{

public DocumentManagerAction(){
System.out.println("DocumentManagerAction======>");
}

private final int BUFFER_SIZE = 16 * 1024 ;

private int id;
private File file; //上传文件
private String fileFileName; //上传文件�
private String fileContentType; //文件类型
private int parentId;

private String downFileName;

private Page<FileManager> page=new Page<FileManager>();

@Autowired
FileManagerService fileManagerService;

@Autowired
UserService userSerivce;

@Autowired
HistoryManagerService historyService;

public File getFile() {
return file;
}

public void setFile(File file) {
this.file = file;
}



public String getFileContentType() {
return fileContentType;
}

public void setFileContentType(String fileContentType) {
this.fileContentType = fileContentType;
}

public String getFileFileName() {
return fileFileName;
}

public void setFileFileName(String fileFileName) {
this.fileFileName = fileFileName;
}


/**
* 创建目录
* @return
*/
public String createDirectory() throws Exception{
String filePath=getRequest().getRealPath("/");
String parentPath=fileManagerService.getFileManager(new Long(parentId)).getFilename();
//创建目录
fileFileName=java.net.URLDecoder.decode(fileFileName, "UTF-8"); //将js代码中的编码的过的参数解码

File myFilePath = new File(filePath+"/"+parentPath,fileFileName);
if(!myFilePath.exists())
{

//创建该目录
myFilePath.mkdirs();
//保存数据库
FileManager fileManager=new FileManager();
fileManager.setFilename(fileFileName);
fileManager.setFileContentType("directory");
fileManager.setFileSize(0);
fileManager.setParentDirectory(parentId);
fileManager.setUploadTime(new Date());
fileManager.setIsDirectory(true);
fileManager.setIsFile(false);
//
String loginName=SpringSecurityUtils.getCurrentUserName();
User user=userSerivce.login(loginName,SpringSecurityUtils.getCurrentUser().getPassword());
if(user!=null){
fileManager.setUser(user);
}
else{
user=userSerivce.getUser(new Long(1));
fileManager.setUser(user);
}
fileManagerService.save(fileManager);


HistoryManager history=new HistoryManager();
history.setFileName(fileFileName);
history.setFileLength(0);
history.setFileType("目录");
history.setOpetionType("创建目录");
history.setUploadUser(user);
history.setUploadTime(new Date());
historyService.save(history);

getResponse().setContentType("json;charset=UTF-8");
StringBuffer sb=new StringBuffer("{");
sb.append("'id':"+fileManager.getId()+",'status':'success'");
sb.append("}");
getResponse().getWriter().write(sb.toString());
}
else{
getResponse().setContentType("json;charset=UTF-8");
getResponse().getWriter().write("{'status':'allReady'}");
}
return null;
}

public void copy(File src, File dst) {
try {
InputStream in = null ;
OutputStream out = null ;
try {
in = new BufferedInputStream( new FileInputStream(src), BUFFER_SIZE);
out = new BufferedOutputStream( new FileOutputStream(dst), BUFFER_SIZE);
byte [] buffer = new byte [BUFFER_SIZE];
while (in.read(buffer) > 0 ) {
out.write(buffer);
}
out.flush();

} finally {
if ( null != in) {
in.close();
}
if ( null != out) {
out.close();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}

/**
* 批量删除
* @return
*/
public String modelDelete(){
return null;
}


/**
* 上传文件
* @return
*/
public String upLoadFile() throws Exception{
try {
List<String> list=new ArrayList<String>();
list.add("txt");
list.add("jpg");
list.add("png");
list.add("gif");
list.add("doc");
list.add("rar");
list.add("xls");
list.add("zip");

String tagDirectory = getRequest().getRealPath("/");
FileManager parentFileManager=fileManagerService.getFileManager(new Long(parentId));
FileManager rootFileManager=fileManagerService.getFileManager(new Long(1));

File target = new File(tagDirectory+"/"+rootFileManager.getFilename()+"/"+parentFileManager.getFilename(), fileFileName);
if(!target.exists()){
String houZhuiMing=fileFileName.substring(fileFileName.lastIndexOf(".")+1);
if(list.contains(houZhuiMing.toLowerCase())){
copy(file,target);

//保存到数据库
FileManager fileManager=new FileManager();
fileManager.setFilename(fileFileName);
fileManager.setFileSize((int)file.length());
fileManager.setFileContentType(houZhuiMing);
fileManager.setParentDirectory(parentId);
fileManager.setIsDirectory(false);
fileManager.setIsFile(true);
fileManager.setUploadTime(new Date());
String loginName=SpringSecurityUtils.getCurrentUserName();
User user=userSerivce.login(loginName,SpringSecurityUtils.getCurrentUser().getPassword());
if(user!=null){
fileManager.setUser(user);
}
else{
user=userSerivce.getUser(new Long(1));
fileManager.setUser(user);
}
fileManagerService.save(fileManager);


HistoryManager history=new HistoryManager();
history.setFileName(fileFileName);
history.setFileLength(fileManager.getFileSize()/1024);
history.setFileType("目录");
history.setOpetionType("上传文件");
history.setUploadUser(user);
history.setUploadTime(new Date());
historyService.save(history);

getResponse().setContentType("text/html;charset=UTF-8");
getResponse().getWriter().write("上传成功");
}
else{
getResponse().setContentType("text/html;charset=UTF-8");
getResponse().getWriter().write("只能上传图片,文本,word,zip,rar,xls文件");
}
}
else{
getResponse().setContentType("text/html;charset=UTF-8");
getResponse().getWriter().write("文件已经存在");
}
} catch (Exception e) {
getResponse().setContentType("text/html;charset=UTF-8");
getResponse().getWriter().write("上传失败");
throw e;
}
return null;
}


/**
* 修改目录
* @return
*/
public String updateDirectory() throws Exception{
String filePath=getRequest().getRealPath("/");
if(parentId==1){
FileManager fileManager=fileManagerService.getFileManager(new Long(parentId));
File file=new File(filePath+"/"+fileManager.getFilename());
String newFileName=filePath.substring(0,filePath.lastIndexOf("\\"))+"\\"+fileFileName;
File file1=new File(newFileName);
StringBuffer sb=new StringBuffer("{");
if(file1.exists()){ //先判断该目录是否存在
sb.append("'status':'allReady'");
}
else{
file.renameTo(new File(newFileName));
fileManager.setFilename(fileFileName);
fileManagerService.updateFileManager(fileManager);
sb.append("'status':'success'");
}
sb.append("}");


HistoryManager history=new HistoryManager();
history.setFileName(fileFileName);
history.setFileLength(0);
history.setFileType("目录");
history.setOpetionType("修改目录");
String loginName=SpringSecurityUtils.getCurrentUserName();
User user=userSerivce.login(loginName,SpringSecurityUtils.getCurrentUser().getPassword());
history.setUploadUser(user);
history.setUploadTime(new Date());
historyService.save(history);

getResponse().setContentType("text/html;charset=UTF-8");
getResponse().getWriter().write(sb.toString());
}
else{
FileManager fileManager=fileManagerService.getFileManager(new Long(parentId));
FileManager parentFile=fileManagerService.getFileManager(new Long(fileManager.getParentDirectory()));
filePath=filePath+"\\"+parentFile.getFilename()+"\\"+fileManager.getFilename();
fileManager.setFilename(fileFileName);
File file=new File(filePath);
String newFileName=filePath.substring(0,filePath.lastIndexOf("\\"))+"\\"+fileFileName;
File file1=new File(newFileName);
StringBuffer sb=new StringBuffer("{");
if(file1.exists()){ //先判断该目录是否存在
sb.append("'status':'allReady'");
}
else{
file.renameTo(new File(newFileName));
fileManagerService.updateFileManager(fileManager);
sb.append("'status':'success'");
}
sb.append("}");

HistoryManager history=new HistoryManager();
history.setFileName(fileFileName);
history.setFileLength(0);
history.setFileType("目录");
history.setOpetionType("修改目录");
String loginName=SpringSecurityUtils.getCurrentUserName();
User user=userSerivce.login(loginName,SpringSecurityUtils.getCurrentUser().getPassword());
history.setUploadUser(user);
history.setUploadTime(new Date());
historyService.save(history);

getResponse().setContentType("text/html;charset=UTF-8");
getResponse().getWriter().write(sb.toString());


}
return null;
}


/**
* 删除文件
* @return
* @throws Exception
*/
public String deleteDirectoryOrFile()throws Exception{
try {
FileManager fileManager=fileManagerService.getFileManager(new Long(parentId));
String filePath=getRequest().getRealPath("/");
FileManager parentFileManager=fileManagerService.getFileManager(new Long(fileManager.getParentDirectory()));
FileManager rootFileManager=fileManagerService.getFileManager(new Long(1));
File dFile=null;
if(parentFileManager.getFilename()==rootFileManager.getFilename()){ //删除目录
dFile=new File(filePath+"/"+rootFileManager.getFilename()+"/"+fileManager.getFilename());
}
else{ //删除文件
dFile = new File(filePath+"/"+rootFileManager.getFilename()+"/"+parentFileManager.getFilename()+"/"+fileManager.getFilename());
}
if(dFile.exists())
{
dFile.delete();

HistoryManager history=new HistoryManager();
history.setFileName(fileManager.getFilename());
history.setFileLength(0);
history.setFileType("目录");
history.setOpetionType("删除文件,目录");
String loginName=SpringSecurityUtils.getCurrentUserName();
User user=userSerivce.login(loginName,SpringSecurityUtils.getCurrentUser().getPassword());
history.setUploadUser(user);
history.setUploadTime(new Date());
historyService.save(history);

fileManagerService.deleteFileManager(new Long(parentId));
getResponse().setContentType("text/html;charset=UTF-8");
getResponse().getWriter().write("删除成功!~");
}
else{
getResponse().setContentType("text/html;charset=UTF-8");
getResponse().getWriter().write("该文件已经删除或者不存在!~");
}
} catch (IOException e) {
getResponse().setContentType("text/html;charset=UTF-8");
getResponse().getWriter().write("删除失败!~");
}
return null;
}

/**
* @return
* @throws Exception
*/
public String loadDocument() throws Exception{
StringBuilder sb=new StringBuilder("[");
String root=getRequest().getParameter("root");
if(root!=null&&"true".equals(root)){
FileManager fileManager= fileManagerService.getFileManager(new Long(1));
sb.append("{");
sb.append("'id':").append(""+fileManager.getId()+",");
sb.append("'fileName':").append("'"+fileManager.getFilename()+"',");
sb.append("'fileSize':").append(fileManager.getFileSize()+",");
sb.append("'fileContentType':").append("'"+fileManager.getFileContentType()+"',");
sb.append("'uploadUser':").append("'"+fileManager.getUser().getLoginName()+"',");
sb.append("'uploadTime':").append("'"+fileManager.getUploadTime()+"',");
sb.append("'parentDirectory':").append("'"+fileManager.getParentDirectory()+"',");
sb.append("'isDirectory':").append("'"+fileManager.getIsDirectory()+"',");
sb.append("'isFile':").append("'"+fileManager.getIsFile()+"',");
sb.append("'childFiles':");
sb.append("''");
sb.append("}");
}
else{
List<FileManager> list=fileManagerService.getFileManagerByParentId(id);
for(FileManager fileManager1:list){
sb.append("{");
sb.append("'id':").append(""+fileManager1.getId()+",");
sb.append("'fileName':").append("'"+fileManager1.getFilename()+"',");
sb.append("'fileSize':").append(fileManager1.getFileSize()+",");
sb.append("'fileContentType':").append("'"+fileManager1.getFileContentType()+"',");
sb.append("'uploadUser':").append("'"+fileManager1.getUser().getLoginName()+"',");
sb.append("'parentDirectory':").append("'"+fileManager1.getParentDirectory()+"',");
sb.append("'uploadTime':").append("'"+fileManager1.getUploadTime()+"',");
sb.append("'isDirectory':").append("'"+fileManager1.getIsDirectory()+"',");
sb.append("'isFile':").append("'"+fileManager1.getIsFile()+"'");
sb.append("},");
}
if(sb.lastIndexOf(",")>0){
sb=new StringBuilder(sb.substring(0,sb.lastIndexOf(",")));
}
}

sb.append("]");
System.out.println(sb.toString());
getResponse().setContentType("text/html;charset=UTF-8");
getResponse().getWriter().write(sb.toString());
return null;
}

@Override
public String execute() throws Exception {
return SUCCESS;
}

/**
* 下载文件
* @return
*/
public InputStream getDownLoadFile() throws Exception{
FileManager fileManager=fileManagerService.getFileManager(new Long(parentId));
fileFileName=fileManager.getFilename();
FileManager parentFileManager=fileManagerService.getFileManager(new Long(fileManager.getParentDirectory()));
String filePath=getRequest().getRealPath("/");
FileManager rootFileManager=fileManagerService.getFileManager(new Long(1));
filePath=filePath+"/"+rootFileManager.getFilename()+"/"+parentFileManager.getFilename()+"/"+fileManager.getFilename();
File file=new File(filePath);
if(file.exists()){ //判断文件是否存在
HistoryManager history=new HistoryManager();
history.setFileName(fileManager.getFilename() );
history.setFileLength(fileManager.getFileSize()/1024);
history.setFileType("文件");
history.setOpetionType("下载文件");
String loginName=SpringSecurityUtils.getCurrentUserName();
User user=userSerivce.login(loginName,SpringSecurityUtils.getCurrentUser().getPassword());
history.setUploadUser(user);
history.setUploadTime(new Date());
historyService.save(history);

return ServletActionContext.getServletContext().getResourceAsStream(rootFileManager.getFilename()+"/"+parentFileManager.getFilename()+"/"+fileManager.getFilename());
}
else{ //
getResponse().setContentType("text/html;charset=UTF-8");
getResponse().getWriter().write("对不起该文件不存在");
}
return null;
}



public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public int getParentId() {
return parentId;
}

public void setParentId(int parentId) {
this.parentId = parentId;
}

public String getDownFileName() {
try {
return new String(fileFileName.getBytes(), "ISO8859-1");
} catch (Exception e) {
e.printStackTrace();
}
return null;
}

public void setDownFileName(String downFileName) {
this.downFileName = downFileName;
}


}


----
xml配置:
<package name="document" extends="struts-default" namespace="/document">
<action name="documentManagerAction" class="documentManagerAction">
<result name="success" type="stream">
<param name="contentType">application/octet-stream</param>
<param name="contentDisposition">attachment;filename=${downFileName}</param>
<param name="inputName">downLoadFile</param>
<param name="bufferSize">4096</param>
</result>
</action>

</package>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值