zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    document.getElementById("mytxt").style.left=""style.left在IE的FF中注意
    asp.net 用户控件中 使用相对路径的解决方法 图片路径问题(用户控件、图片路径) ,ResolveUrl
    探索 Block (一) (手把手讲解Block 底层实现原理)
    iOS 多线程开发 (概念与API简介)
    iOS 性能小点
    iOS runtime (二)(runtime学习之AutoCoding源码分析)
    探索 NSRunLoop (二)(NSRunLoop 自己动手实现SimpleRunLoop)
    iOS NSNotificationCenter (自己实现一个通知中心XMCNotificationCenter)
    iOS runtime (三)(runtime学习之YYModel源码分析)
    iOS runtime(一)(runtime 分析理解)
  • 原文地址:https://www.cnblogs.com/bunuo/p/6185312.html
Copyright © 2011-2022 走看看