文件上传下载

文件上传

编写步骤

前提:上传文件表单的enctype必须是multipart/form-data;method必须是post

1. 在你的上传文件的表单里使用<s:file>标签,给他起一个名字。如果需要一次上传多个文件,就必须使用多个file标签,但它们的名字必须是相同的。

2. 编写动作类。此类必须有以下3个属性

属性类型

属性名

说明

java.io.File

[inputName]

代表要上传的文件

java.lang.String

[inputName]FileName

代表要上传的文件文件名

java.lang.String

[inputName]ContentType

代表要上传的文件内容类型

注:适用于单文件上传

3. 多文件上传

//上传文件
	private File[] file;
	//上传的文件名
	private String[] fileFileName;
	//上传的文件内容类型
private String[] fileContentType;

public String reg(){
String path = ServletActionContext.
getServletContext().getRealPath("/update");
	int size = file.length;
	for(int i=0; i<size; i++){
			//获取后缀名
	String ext=fileFileName[i].
substring(fileFileName[i].lastIndexOf("."));
	//获取当前系统时间
	long newName = System.currentTimeMillis();
	//构建新的文件
	File termfile = new File(path, newName+ext);
	//renameTo
	file[i].renameTo(termfile);
	}
return "success";
}



三、File Upload拦截器

struts2应用程序里,File Upload拦截器和Jakarta Commons FileUpload库可以帮助分析并负责上传文件。它是defaultStack拦截器组的成员。

程序员一般会设置以下两个File Upload拦截器的属性:

maximumSize:上传文件的最大长度(单位字节),默认值2MB.

allowedTypes:允许上传得内容类型的清单,各类型之间以逗号分隔.

public class SingleFileUploadAction extends ActionSupport implements ServletContextAware{

	private static final long serialVersionUID = -8952900773638870479L;
	private File attachment;
	private String attachmentFileName;
	private String attachmentContentType;
	private String description;
	private ServletContext servletContext;
	public String upload(){
		if(attachment!=null){
			String dataDir = servletContext.getRealPath("/WEB-INF/");
			File saveFile = new File(dataDir,attachmentFileName);
			boolean r = attachment.renameTo(saveFile);
			return SUCCESS;
		}else{
			return INPUT;
		}
		
	}
	
	public void setServletContext(ServletContext servletContext) {
		this.servletContext = servletContext;
	}

	public File getAttachment() {
		return attachment;
	}
	public void setAttachment(File attachment) {
		this.attachment = attachment;
	}
	public String getAttachmentFileName() {
		return attachmentFileName;
	}
	public void setAttachmentFileName(String attachmentFileName) {
		this.attachmentFileName = attachmentFileName;
	}
	public String getAttachmentContentType() {
		return attachmentContentType;
	}
	public void setAttachmentContentType(String attachmentContentType) {
		this.attachmentContentType = attachmentContentType;
	}
	public String getDescription() {
		return description;
	}
	public void setDescription(String description) {
		this.description = description;
	}
	
}



<struts>
	<constant name="struts.devMode" value="true"></constant>
	<package name="p1" extends="struts-default">
		<action name="singleFileUploadInput">
			<result>/SingleUpload.jsp</result>
		</action>
		<action name="singleFileUpload" class="cn.sdxhce.action.SingleFileUploadAction" method="upload">
			<interceptor-ref name="fileUpload">
				<param name="maximumSize">1048576</param>
			</interceptor-ref>
			<interceptor-ref name="basicStack"></interceptor-ref>
			<result name="input">/SingleUpload.jsp</result>
			<result>/SingleConfirm.jsp</result>
		</action>
		<action name="uploadAction" class="cn.sdxhce.action.FileUpload">
			<result>/uploadResult.jsp</result>
			<result name="input">/upload.jsp</result>
		</action>
		<action name="multipleUploadAction" class="cn.sdxhce.action.MultipleUploadAction" method="upload">
			<result name="input">/multipleUpload.jsp</result>
			<result>/multipleUploadResult.jsp</result>
		</action>
	</package>
</struts>



文件下载

Action

//获取输入流
	public InputStream getIs(){
		try {
			return new FileInputStream("d:/psbeCAZX2XZT.jpg");
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return null;
	}
	//
	public String stream(){
		try {
			name = URLEncoder.encode(name, "utf-8");
		} catch (UnsupportedEncodingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return "stream";
	}



配置文件中:

<result name="stream" type="stream">
  <param name="contentType">image/jpeg</param>
  <param 						name="contentDisposition">attachment;filename="${name}.jpg"
  </param>
  <param name="inputName">is</param>
</result>




你可能感兴趣的:(文件上传下载)