struts的上传下载

mac2022-06-30  19

文件上传 添加jar包 commons-io-1.3.2.jar commons-fileupload-1.2.1.jar

前台页面 form表单 method值为post 添加"enctype"属性,值为"multipart/form-data" <form action="uploadFile" enctype="multipart/form-data" method="post"> <input type="file" name="upload"/><br> <input type="submit" value="上传文件"/> </form> 后台action 定义四个属性 设置setter和getter方法 private File upload;//上传的文件 private String uploadContentType;//文件上传类型 private String uploadFileName;//上传文件名称 private String savePath;//保存的路径 该属性的值在struts.xml文件中配置

//savePath的getter方法需要修改下 public String getSavePath() { //获取文件上传的时候绝对路径 return ServletActionContext.getServletContext().getRealPath(savePath); }

上传文件方法 public String uploadFile() throws Exception{ byte[] buffer = new byte[1024]; FileInputStream fis = new FileInputStream(getUpload()); FileOutputStream fos = new FileOutputStream(getSavePath()+"\\"+this.getUploadFileName()); int length=fis.read(buffer); while(length>0){ fos.write(buffer,0,length); length = fis.read(buffer); } fis.close(); fos.flush(); fos.close(); return "success"; } struts配置文件 <action name="uploadFile" class="com.zhh.action.UploadAction" method="uploadFile"> <!-- 设置下载的文件所在的路径 --> <param name="savePath">/uploadfile</param> <result name="success">upload_success.jsp</result> </action>

文件下载 前台页面 <a href="download?fileName=${uploadFileName }">download</a>

后台action 定义四个属性 设置setter和getter方法 //读取下载文件的目录 private String inputPath; //下载文件的文件名 private String fileName; //读取下载文件的输入流 private InputStream inputStream; //下载文件的类型 private String conetntType;

//创建InputStream输入流 以流的方式读取文件 inputStream属性的getter方法需要编写 public InputStream getInputStream() throws FileNotFoundException{ String path=ServletActionContext.getServletContext(). getRealPath(inputPath); return new BufferedInputStream(new FileInputStream(path+"\\"+fileName)); } public String download(){ return "success"; }

struts配置文件 <action name="download" class="com.zhh.action.DownloadAction" method="download"> <!-- 设置下载的文件所在的路径 --> <param name="inputPath">/uploadfile</param> <result name="success" type="stream"> <!-- 允许下载的文件的类型:指定为所有的二进制的文件类型,去tomcat的wen.xml里面搜索.exe --> <param name="contentType">application/octet-stream</param> <!-- 对应的就是Action种的属性,返回流的属性,【其实就是getInputStream()】 --> <param name="inputName">inputStream</param> <!-- 下载头,包括:浏览器显示的文件名 --> <param name="contentDisposition"> attachment;filename="${fileName}" </param> <!-- 缓冲区大小设置 --> <param name="bufferSize">4096</param> </result> </action>

转载于:https://www.cnblogs.com/zhuhuibiao/p/9825214.html

最新回复(0)