`
zeng7960983
  • 浏览: 44469 次
  • 性别: 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>
分享到:
评论

相关推荐

    struts2上传下载项目

    在"struts2上传下载项目"中,我们可以深入理解如何利用Struts2实现文件的上传与下载功能。 首先,上传功能在Web应用中十分常见,比如用户在注册时上传头像,或者提交文档等。在Struts2中,我们主要借助`struts2-...

    struts2上传下载

    ### Struts2上传下载功能详解 #### 一、引言 在Web开发中,文件上传下载是一项常见的需求,尤其在用户交互频繁的应用场景中。Struts2作为一款成熟且广泛使用的MVC框架,提供了简洁而强大的文件上传下载功能。本文...

    Struts2上传下载

    Struts2上传下载,可以更方便的让大家学习、使用

    struts2 上传下载

    在"struts2 上传下载"这个主题中,我们主要关注的是如何在Struts2框架下实现文件上传和下载的功能。这一知识点对于任何需要处理用户提交文件的Web应用程序都至关重要。 首先,我们需要了解Struts2的Action类,它是...

    struts2 上传下载模板

    这篇博客文章“Struts2 上传下载模板”可能提供了关于如何在Struts2框架中实现这一功能的详细教程。 首先,我们来讨论文件上传。在Struts2中,文件上传通常依赖于`Apache Commons FileUpload`库,它处理了文件的多...

    struts2上传下载+前端剪切图片

    在"struts2上传下载+前端剪切图片"这个主题中,我们将探讨Struts2框架如何处理文件上传和下载功能,以及如何在前端实现图片的剪切操作。 **文件上传**: 在Struts2中,文件上传主要依赖于Apache的Commons ...

    Struts2项目struts2 上传 下载 项目

    在这个“Struts2 上传下载项目”中,我们将深入探讨如何利用Struts2实现文件上传与下载功能,并结合MySQL数据库、DAO(数据访问对象)层以及MVC架构来构建一个完整的应用。 1. **Struts2框架基础** Struts2的核心...

    struts2文件上传下载源代码

    在Struts2中,文件上传和下载是常见的功能需求,特别是在处理用户交互和数据交换时。这篇博客文章提供的"struts2文件上传下载源代码"旨在帮助开发者理解和实现这些功能。 文件上传功能允许用户从他们的设备上传文件...

    struts2 上传下载代码及流程文档

    在Struts2中,实现文件上传和下载功能是常见的需求,这对于用户交互和数据交换至关重要。本文档将深入讲解Struts2中如何进行文件上传和下载的代码实现及其流程。 首先,我们需要理解Struts2文件上传的核心组件:`...

    struts2 上传下载组建Jar

    在Struts2框架中,处理文件上传和下载功能是必不可少的一部分,尤其是在用户需要交互式地提交或获取文件的场景下。在这个“struts2 上传下载组建Jar”中,主要包括了两个关键的第三方库:`commons-io-1.4.jar`和`...

    struts2上传下载实例

    在Struts2中,文件上传和下载是常见的功能需求,尤其对于处理用户提交的表单数据时,如上传图片、文档等。这个"struts2_上传下载"实例则涵盖了多种实现这些功能的方法。 首先,Struts2的文件上传依赖于Apache的...

    Struts2上传下载组件

    在Struts2中,上传和下载功能是常见的需求,特别是在处理用户交互和数据交换时。这个“Struts2上传下载组件”就是为了满足这种需求而设计的。让我们深入探讨一下这个组件的工作原理以及如何在实际项目中使用它。 ...

    Struts2 上传下载

    Struts2作为一款流行的Java Web框架,为开发者提供了丰富的功能,其中包括文件上传和下载的处理。在Struts2中,实现文件上传下载是一项常见的任务,它涉及到HTTP协议、MIME类型、临时文件处理以及流的读写等多个方面...

Global site tag (gtag.js) - Google Analytics