首页 > 代码库 > ssh框架文件上传下载

ssh框架文件上传下载

<!doctype html>
<html lang="en">
 <head>
  <meta charset="UTF-8">
  <meta name="Author" content="BuNuo">
  <meta name="Keywords" content="文件上传下载">
  <meta name="Description" content="ssh框架文件上传下载">
  <title>Document</title>
 </head>
 <body>
    <form action="newFile" method="post" enctype="multipart/form-data">
        <input type="file" name="file">
        <input type="submit" value="上传">
    </form>
    <a href="downFile?filename=${filename}">下载</a>
 </body>
</html>
package com.cpsec.tang.chemical.action;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

import org.apache.commons.io.FileUtils;
import org.apache.struts2.ServletActionContext;
import org.springframework.stereotype.Controller;

import com.opensymphony.xwork2.ActionSupport;

@Controller("newFileAction")
public class NewFileAction extends ActionSupport {
    private File file;//文件
    private String fileFileName;//文件名称    
    private String fileContentType; //文件类型   
    private String filename;
    private InputStream inputStream;
    
    public String newFile(){
        File dir=new File(ServletActionContext.getServletContext().getRealPath("files"));  
        //判断文件是否上传,如果上传的话将会创建该目录  
        if(!dir.exists()){  
            dir.mkdir(); //创建该目录  
        }  
        System.out.println(file);
        System.out.println(fileFileName);
        //第一种文件上传的方法  
        //声明文件输入流,为输入流指定文件路径  
        //获取输出流,获取文件的文件地址及名称  
        FileInputStream in=null;  
        FileOutputStream out=null;
        try{  
            in= new FileInputStream(file);
            out=new FileOutputStream(dir + "\\" +fileFileName);  
            byte[] b=new byte[1024*1024];//每次写入的大小  
            int i=0;  
            while((i=in.read(b))>0){  
                out.write(b,0,i);  
            }  
            in.close();
            out.close(); 
        }catch(Exception e){  
            e.printStackTrace();  
        }finally{  
        }  
        
        /*//第二种文件上传的方法  
        try {
            FileUtils.copyFile(file,new File(dir,fileFileName));  
        } catch (IOException e) {
            e.printStackTrace();
        }  
        
          //第三种方法  
          BufferedReader bReader=null;
          BufferedWriter bWriter=null;
          try{  
              bReader = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
              bWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(dir+"\\"+fileFileName)));  
              char[] str=new char[1024*1024];  
              int i=0;  
              while((i=bReader.read(str))>0){  
                  bWriter.write(str,0,i);   
              }  
              bReader.close();
              bWriter.close();  
              dir.delete();
          }catch(Exception e){  
              e.printStackTrace();  
          }finally{  
              
          }  */
          return SUCCESS;
    }
    
    public String downFile(){
        System.out.println(filename);
        inputStream=ServletActionContext.getServletContext().getResourceAsStream("/files/"+filename);
        System.out.println(inputStream);
        return SUCCESS;
    }


    public File getFile() {
        return file;
    }


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


    public String getFileFileName() {
        return fileFileName;
    }


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


    public String getFileContentType() {
        return fileContentType;
    }


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

    public String getFilename() {
        return filename;
    }

    public void setFilename(String filename) {
        this.filename = filename;
    }

    public InputStream getInputStream() {
        return inputStream;
    }

    public void setInputStream(InputStream inputStream) {
        this.inputStream = inputStream;
    }

}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
    <package name="newFileAction" namespace="/" extends="struts-default">
        
        <action name="downFile" class="newFileAction" method="downFile">
            <result name="success" type="stream">  
               <param name="contentType">application/octet-stream;charset=ISO8859-1</param>
            <!-- inputName 流对象名 —— 比如这里写inputStream,它就会自动去找Action中的getInputStream方法。 -->
            <param name="inputName">inputStream</param>
            <!-- contentDisposition 使用经过转码的文件名作为下载文件名 —— 默认格式是attachment;filename="${fileName}",将调用该Action中的getFileName方法。 -->
            <param name="contentDisposition">attachment;filename=${filename}</param>
            <!-- bufferSize 下载文件的缓冲大小 -->
            <param name="bufferSize">4096</param>
            </result>
         </action>
    </package>
</struts>

 

ssh框架文件上传下载