strut2中文件的上传与下载

来源:互联网 发布:im短域名 编辑:程序博客网 时间:2024/06/06 01:23
//下载package com.test.action;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStream;import javax.servlet.ServletContext;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionSupport;public class DownloadAction extends ActionSupport{private static final long serialVersionUID = 1L;private String contentType;private Long contentLength;private String contentDisposition; //设定响应头,改响应头指定相应是一个文件下载类型private InputStream inputStream; //下载文件作为输入流传进内存private String fileName; //下载文件名,提供getter/setter 方法private String sub; //用来记录一下下载文件的文件名public String download() throws Exception {System.out.println("下载...");//确定各个成员变量的值contentType = "text/html";//下载视频String dir = "G:\\java-Train-20170320\\java-code\\java2月群\\群里相关的上传文件\\jsp总结.avi";String dir = "E:\\Strut2-Up-Download\\desk1.jpg";//从 dir 中取出文件名的子串sub = dir.substring(22, dir.length());System.out.println(sub);//desk1.jpg//不需要contentDisposition = "attachment;filename='document.pdf'";//把要下载的文件所在的位置传进来,作为输入流传进内存提供下载inputStream = new FileInputStream(dir);//现在下载文件已经变成输入流 inputStream 了contentLength = (long) inputStream.available();//result = "input";return SUCCESS;//这儿必须要写成 SUCCESS ,要想跳转必须在下载完成之后再跳}public String getFileName() {return sub;}public void setFileName(String fileName) {this.fileName = fileName;}public String getContentType() {return contentType;}public void setContentType(String contentType) {this.contentType = contentType;}public Long getContentLength() {return contentLength;}public void setContentLength(Long contentLength) {this.contentLength = contentLength;}public String getContentDisposition() {return contentDisposition;}public void setContentDisposition(String contentDisposition) {this.contentDisposition = contentDisposition;}public InputStream getInputStream() {return inputStream;}}//上传package com.test.action;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStream;import java.util.UUID;import com.opensymphony.xwork2.ActionSupport;public class UploadAction extends ActionSupport{private File upload; //上传文件private String uploadContentType; //上传的文件类型private String uploadFileName; //上传的文件名//提供相应属性的getter/setter方法public File getUpload(){return upload;}public void setUpload(File upload){this.upload = upload;} public String getUploadContentType() {return uploadContentType;}public void setUploadContentType(String uploadContentType) {this.uploadContentType = uploadContentType;}public String getUploadFileName(){return uploadFileName;}public void setUploadFileName(String uploadFileName){this.uploadFileName = uploadFileName;}public String upload() throws Exception{String result;System.out.println(upload);System.out.println(uploadContentType);System.out.println(uploadFileName);//指定一个文件输出目录String dir = "E://Strut2-Up-Download/"+uploadFileName;//将这个文件输出到out中FileOutputStream out = new FileOutputStream(dir);FileInputStream in = new FileInputStream(upload);byte [] buffer = new byte[1024];int len = 0;while((len = in.read(buffer)) != -1){out.write(buffer,0,len);}//关闭输出流对象out.close();//关闭输入流对象in.close();//返回result = "upload_success";return result;}}//获得Web项目的根目录/*public String getWebRootPath() throws Exception{ActionContext actionContext = ActionContext.getContext();ServletContext servletContext = (ServletContext)actionContext.get(ServletActionContext.SERVLET_CONTEXT);String rootPath = servletContext.getRealPath("/");return rootPath;}*//* 上面的方法不仅可用于上传图片类型,也适用于其他文件类型的上传。注意: Struts 2上传文件的默认大小限制是2MB,所以在测试的时候文件不能太大,最好找个小的文件。 如果要修改默认大小,只需要在Struts 2的struts.properties或struts.xml中修改struts.multipart.maxSize的值,如struts.multipart.maxSize=1024表示上传文件的总大小不能超过1KB 。如在struts.xml中设置上传的文件大小不超过50KB,可以在struts.xml的 标签里面添加: * *///xml文件配置<?xml version="1.0" encoding="UTF-8" ?>/download.jsp2048attachment;fileName=${fileName}/success.jsp