码迷,mamicode.com
首页 > 其他好文 > 详细

struts2中的文件上传和下载

时间:2014-06-20 09:21:55      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:style   class   java   ext   color   com   

天下大事,必做于细。天下难事,必作于易。

曾经见过某些人,基础的知识还不扎实就去学习更难的事,这样必然在学习新的知识会很迷惑结果

再回来重新学习一下没有搞懂的知识,这必然会导致学习效率的下降!我写的这篇上传和下载都很基础。

十分适合初学者!

jsp:页面

<!--在进行文件上传时,表单提交方式一定要是post的方式,因为文件上传时二进制文件可能会很大,还有就是enctype属性,这个属性一定要写成multipart/form-data,
  不然就会以二进制文本上传到服务器端--> 
  <form action="fileUpload.action" method="post" enctype="multipart/form-data">
      
        file: <input type="file" name="file"><br>
        
        <input type="submit" value="submit">
    </form>

上传action

public class FileUploadAction extends ActionSupport
{
    private String username;
    
   //注意,file并不是指前端jsp上传过来的文件本身,而是文件上传过来存放在临时文件夹下面的文件
    private File file;
    
    //提交过来的file的名字
    private String fileFileName;//必须是input中name值+FileName固定格式
    
    //提交过来的file的MIME类型
    private String fileContentType;//

    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;
    }
    
    @Override
    public String execute() throws Exception
    {
        String root = ServletActionContext.getServletContext().getRealPath("/upload");//上传的文件的位置
        
        InputStream is = new FileInputStream(file);//基于file创建一个文件输入流
        
        OutputStream os = new FileOutputStream(new File(root, fileFileName));//创建输出流
        
        System.out.println("fileFileName: " + fileFileName);


    // 因为file是存放在临时文件夹的文件,我们可以将其文件名和文件路径打印出来,看和之前的fileFileName是否相同
        System.out.println("file: " + file.getName());
        System.out.println("file: " + file.getPath());
        
        byte[] buffer = new byte[1024];
        int length = 0;
        
        while(-1 != (length = is.read(buffer, 0, buffer.length)))//经典写入操作
        {
            os.write(buffer);
        }
        
        os.close();
        is.close();
        
        return SUCCESS;
    }
}


这样就成功的将文件上传了,然后你就去看工程中上传的目录中有没有你的文件很遗憾没有,原因是它上传到tomcat/webapps工程中upload的目录中了.


下载

jsp页面

下载:
<a href="downloadAction?fileName=JAVA.doc">下载</a>


DownloadAction:

package com.iss.action;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class DownLoad extends ActionSupport {


private String fileName;//要下载的文件名

private String directory;//要下载的文件目录

public void setDirectory(String directory) {
this.directory = directory;
}


public String getFileName() {
return fileName;
}


public void setFileName(String fileName) {
this.fileName = fileName;
}


public InputStream getInputStream() throws FileNotFoundException {


String dir = directory + fileName;

System.out.println(dir);//输出的文件要下载的路径


// return ServletActionContext.getServletContext().getResourceAsStream(
// "/" +dir);//使用相对路径下载文件内容默认是和webRoot同一目录
return new FileInputStream(dir);//使用全局路径下载

}

@Override
public String execute() throws Exception {
System.out.println("fileName:" + fileName);
return SUCCESS;
}
}


struts.xml中的配置

<!--下载action -->
<action name="downloadAction" class="com.iss.action.DownLoad">
<!-- <param name="directory">/images/</param> -->下载路径为相对路径
<param name="directory">E:/wang/head/</param>下载路径为绝对路径
<result type="stream">//类型是stream类型注意
<!--指定下载文件内容的类型 -->
<param name="contentType">plain/text</param>
<!--inputName默认值inputStream -->

<!--默认值是inputStream指定文件的源头,根据这个配置,找getInputStream方法获得文件流-->
<param name="inputName">inputStream</param>
<!--动态文件获取 -->
<param name="contentDisposition">attachement;fileName="${fileName}"</param>
<!-- 指定下载文件的缓冲大小 -->
<param name="bufferSize">50000000</param>
</result>
<result name="input">error.jsp</result>
</action>


至此简单的文件读写已经完成!由于水平有限,还望不吝赐教!



struts2中的文件上传和下载,布布扣,bubuko.com

struts2中的文件上传和下载

标签:style   class   java   ext   color   com   

原文地址:http://blog.csdn.net/wangdianyong/article/details/28597733

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!