`
zeng7960983
  • 浏览: 43322 次
  • 性别: Icon_minigender_1
  • 来自: 邵阳
社区版块
存档分类
最新评论

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>
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics