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>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM