Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 965|回复: 0

struts2的上传和下载

  [复制链接]

该用户从未签到

发表于 2011-10-12 10:46:43 | 显示全部楼层 |阅读模式
1,文件上传

1)struts.xml配置

<action name="addStockEx" class="action.stock.AddStockAction">
         <param name="savePath">/images/upload</param> <!--这里说明保存的目录-->
         <param name="allowTypes">image/bmp,image/png,image/gif,image/jpg,image/jpeg</param> <!--允许上传的文件类型-->
      <result name="SUCC">/jsp/success.jsp</result> <!--返回成功-->
      <result name="input">/jsp/upload.jsp</result>        <!--上传错误返回页面-->
   </action>

2)Action类

public class UploadFile

{

  private String allowTypes;
private String savePath;
private File upload;
private String uploadContentType;
private String uploadFileName;//注意这里是***FileName,其中***是File的变量名

public String execute() throws Exception

{

   boolean b = filterType(getAllowTypes().split("\\,"));
  if(!b)
  {
   setTip("添加失败!");
   setError("不支持此类型的文件,请传入.bmp .png .gif .jpg .jpeg格式的文件!");
   return "input";
  }
  
  //file upload
  FileOutputStream fos = new FileOutputStream(getSavePath()+"\\"+getUploadFileName());
  FileInputStream fis = new FileInputStream(getUpload());
  byte[] buf = new byte[1024];
  int len = 0;
  while ((len=fis.read(buf))>0)
  {
   fos.write(buf,0,len);
  }

}

//判断上传文件类型是否支持

public boolean filterType(String[] types)
{
  boolean b = false;
  String fileType = getUploadContentType();
  for(String type : types)
  {
   if(type.equals(fileType))
   {
    b = true;
   }
  }
  
  return b;
}

//.....这里省略get  set方法

}

3),jsp页面

<form name="theForm" method="post" enctype="MULTIPART/FORM-DATA">

  <input type="file"name="upload">

</form>

2,文件下载

1)struts.xml配置

<action name="download" class="action.FileDownLoadAction">
      <param name="inputPath">/images/button_18.gif</param><!--下载的文件-->
      <result name="SUCC" type="stream">
      
      <param name="contentType">/image/gif</param><!--下载文件的类型-->
      <param name="inputName">targetFile</param><!--注意这里,在action类中肯定会有个getTargetFile()方法-->
      <param name="contentDisposition">attachment;filename="hah.gif"</param>  <!--下载文件的名称,注意这里需要定义attachment;  否则就会默认inline 表示浏览器会尝试打开-->
      <param name="bufferSize">4096</param>  <!--下载缓冲区大小-->
      </result>
    </action>

2)Action类

public class FileDownLoadAction
{
private String inputPath;


public InputStream getTargetFile() {
  return ServletActionContext.getServletContext().getResourceAsStream(inputPath);
}

public void setInputPath(String inputPath) {
  this.inputPath = inputPath;
}
public String execute()
{
  return "SUCC";
}

public String getInputPath() {
  return inputPath;
}


}

3)jsp页面

<a href="download.action">下载</a>



一些参数说明:

contentType

内容类型,和互联网MIME标准中的规定类型一致,例如text/plain代表纯文本,text/xml表示XML,image/gif代表GIF图片,image/jpeg代表JPG图片

inputName

下载文件的来源流,对应着action类中某个类型为Inputstream的属性名,例如取值为inputStream的属性需要编写getInputStream()方法

contentDisposition

文件下载的处理方式,包括内联(inline)和附件(attachment)两种方式,而附件方式会弹出文件保存对话框,否则浏览器会尝试直接显示文件。取值为:

attachment;filename="hah.gif",表示文件下载的时候保存的名字应为hah.gif。如果直接写filename="hah.gif",那么默认情况是代表inline,浏览器会尝试自动打开它,等价于这样的写法:inline; filename="hah.gif"

bufferSize

下载缓冲区的大小

。在这里面,contentType属性和contentDisposition分别对应着HTTP响应中的头Content-Type和Content-disposition头。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2024-5-20 07:20 , Processed in 0.458944 second(s), 45 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表