struts2文件上传(单文件部分)

整理下struts2文件上传单个文件的部分。

先看看具体效果:

输入界面:

结果界面:

前台页面代码:

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" ""><!– 导入struts标签库 –><%@taglib prefix="s" uri="/struts-tags"%><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body><form action="uploadAction!upload.action" method="post" <span style="color:#cc0000;">enctype="multipart/form-data"</span>>文件标题:<input type="text" name="title"><br />选择文件 : <input type="file" name="upload"><br /><input type="submit" value="提交"></form></body></html>action部分:package com.hcj.action;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionSupport;public class UploadAction extends ActionSupport {<span style="color:#cc0000;">//封装文件标题请求参数的属性</span>private String title;<span style="color:#cc0000;">//封装上传文件域的属性(属性名和前台input里name值相同)</span>private File upload;<span style="color:#cc0000;">//封装上传文件类型的属性(属性名称为前台name值+ContentType,如此处前台name值为upload,因此此处为uploadContentType)</span>private String uploadContentType;<span style="color:#cc0000;">//封装上传文件名的属性(属性名称为前台name值+FileName,如此处前台name值为upload,因此此处为uploadFileName)</span>private String uploadFileName;<span style="color:#cc0000;">//配置保存路径(直接在struts.xml文件中配置)</span>private String savePath;public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}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 getSavePath() {/** * <span style="color:#cc0000;">注意事项</span> * <span style="color:#cc0000;">1.</span>并不是和其他方法一样,简单的返回savePath *<span style="color:#cc0000;"> 2.</span>可能有些书上这里返回服务器的路径用的是ServletActionContext.getRequset().getRealPath(savePath), * 但是这个方法已经过期,现用ServletActionContext.getServletContext().getRealPath代替该方法 * <span style="color:#cc0000;">3.</span>如果你第二步方法报The method getServletContext() from the type ServletActionContext refers to the missing type ServletContext错误, * 则是因为少了servlet-api.jar的包,该包在你tomcat目录下的lib文件里可找到,,将其导入你WEB-INF下的lib包里即可。 */<span style="color:#cc0000;">return ServletActionContext.getServletContext().getRealPath(savePath);</span>}public void setSavePath(String savePath) {this.savePath = savePath;}public String upload() throws Exception {//以服务器的文件保存地址和原文件名建立文件上传输出流File outFile = new File(getSavePath() + "\\" + getUploadFileName());//创建字节输出流FileOutputStream fos = new FileOutputStream(outFile);//创建字节输入流FileInputStream fis = new FileInputStream(getUpload());//设置缓冲区byte[] buffer = new byte[1024];int len=0;//读取上传的文件while((len = fis.read(buffer))>0){//写入目标文件fos.write(buffer, 0, len);}//关流fos.close();fis.close();return SUCCESS;}}struts.xml配置:<action name="uploadAction" class="com.hcj.action.UploadAction"><span style="color:#cc0000;"><!– 这里的savePath对应了action里的savePath –></span><param name="savePath">/upload</param><!–定义逻辑视图和物理资源之间的映射 –><result name="success">/suc.jsp</result><result name="error">/error.jsp</result><result name="input">/input.jsp</result></action>人要有梦想,有了梦想才会努力奋斗,

struts2文件上传(单文件部分)

相关文章:

你感兴趣的文章:

标签云: