第六天:知识点(上传下载)

来源:互联网 发布:linux vi 搜索字符串 编辑:程序博客网 时间:2024/04/29 19:36

一、文件上传下载:(单个文件)

第一步:把form表的enctype设置为:“multipart/form-data“,如下:

<form enctype="multipart/form-data" action="${pageContext.request.contextPath}/xxx.action" method="post">   <input  type="file" name="uploadFile"></form>

第二步:在Action类中添加以下属性,属性红色部分对应于表单中文件字段的名称:

public class HelloWorldAction{       private File uploadFile;//得到上传的文件       private String uploadFileContentType;//得到文件的类型       private String uploadFileFileName;//得到文件的名称       //这里略省了属性的getter/setter方法       public String upload() throws Exception{           //获得上传路劲           String realpath = ServletActionContext.getServletContext().getRealPath("/images");           //转换成文件对象           File file = new File(realpath);           //判断上传文件的文件夹是否存在           if(!file.exists()) file.mkdirs();           //执行上传           FileUtils.copyFile(uploadFile, new File(file, uploadFileFileName));           //成功跳转           return "success";     }}

第三步:配置struts.xml文件:

<package name="UploadAction" extends="struts-default">      <action name="upload" class="com.sxt.action.UploadAction" >            <result>success.jsp</result>      </action></package>

第四步:运行测试:。。。。。

二、文件上传下载:(多个文件)

第一步:把form表的enctype设置为:“multipart/form-data“,如下:

<form enctype="multipart/form-data" action="${pageContext.request.contextPath}/xxx.action" method="post">   <input  type="file" name="uploadFile"></form>

第二步:在Action类中添加以下属性,属性红色部分对应于表单中文件字段的名称:

注意:多文件上传和单文件上传唯一不一样的地方就是如下:

public class HelloWorldAction{      private File[] uploadFile;//得到上传的文件      private String[] uploadFileContentType;//得到文件的类型       private String[] uploadFileFileName;//得到文件的名称     //这里略省了属性的getter/setter方法      public String upload() throws Exception{           //获得上传路劲           String realpath = ServletActionContext.getServletContext().getRealPath("/images");          //转换成文件对象          File file = new File(realpath);         //判断上传文件的文件夹是否存在         if(!file.exists()) file.mkdirs();         //执行上传         for(int i=0;i<file.length;i++){            FileUtils.copyFile(uploadFile[i], new File(file, uploadFileFileName[i]));          }         //成功跳转         return "success";     }}

第三步:配置struts.xml文件:

<package name="UploadAction" extends="struts-default">      <action name="upload" class="com.sxt.action.UploadAction" >           <result>success.jsp</result>      </action></package>

第四步:运行测试:。。。。。

注意:上传文件的大小配置:struts.multipart.maxSize=2097152   拦截器默认上传不大于2M的文件,相反就会拦截

  配置大于两M的struts.xml如下

  <constant name="struts.multipart.maxSize" value="209715200"(上传文件的大小)></constant>

三、文件下载:

1、编写Action中的getInputStream()方法,将目标文件转化成输入流

public class DownloadAction extends ActionSupport{       private String fileName;       //fileName的getter和setter方法       public InputStream  getInputStream() throws Exception{           //转码问题           fileName=new String(fileName.getBytes("iso-8859-1"),"UTF-8");           //获得下载路径           String pathStr=ServletActionContext.getServletContext().getRealPath("/upload");          //追加下载的文件名          String path=pathStr+"/"+fileName;          System.out.println("==="+path);          InputStream inputStream=new FileInputStream(path);         //设置编码级         fileName=new String(fileName.getBytes(),"iso-8859-1");          return inputStream;//返回流      }}

2、配置Struts.xml文件

<action name="download" class="com.xasxt.struts.action.DownloadAction">      <result type="stream">          <!-- 设置下载类型     此处不受限制 -->          <param name="contentType">application/actet-stream</param>          <!-- 获得现在对象 -->          <param name="inputName">inputStream</param>          <!-- 下载方式 -->          <param name="contentDisposition">attachment;filename=${fileName}</param>          <!-- 缓冲区 -->          <param name="bufferSize">1024</param>      </result></action>


0 0
原创粉丝点击