Struts上传文件fileupload

来源:互联网 发布:windows phone符号输入 编辑:程序博客网 时间:2024/05/22 16:43

fileUp.jsp上传文件的jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><%@taglib prefix="s" uri="/struts-tags" %><html>  <head>      </head>    <body>    文件上传    <hr>    <s:form action="upload1" enctype="multipart/form-data">    <s:textfield name="title" label="文件标题"/><br>    <s:file name="upload" label="选择文件"/><br>    <s:submit value="上传"/>    </s:form>  </body></html>

fileupsuccess.jsp上传成功跳转的jsp文件

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><%@taglib prefix="s" uri="/struts-tags" %><html>  <head>      </head>    <body>    <h2>文件上传成功!</h2>    <hr>    文件标题:<s:property value="title"/><br>    <s:property value="uploadFileName"/><br>    <img src="<s:property value="'save/'+uploadFileName"/>"/>    <br>  </body></html>

UploadAction.action文件

package login;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionSupport;public class UploadAction extends ActionSupport{private String title;//标题private File upload;//文件对象private String uploadFileName;//文件名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 getUploadFileName() {return uploadFileName;}public void setUploadFileName(String uploadFileName) {this.uploadFileName = uploadFileName;}public String getSavePath() {return ServletActionContext.getServletContext().getRealPath(savePath);//获取绝对路径并修改路径为自定义路径}public void setSavePath(String savePath) {this.savePath = savePath;}public String execute() throws Exception{FileOutputStream fos = new FileOutputStream(getSavePath()+"\\"+getUploadFileName());FileInputStream fis = new FileInputStream(getUpload());byte[] buffer = new byte[1024];int len = 0;while((len = fis.read(buffer))>0){fos.write(buffer);}fis.close();fos.close();return SUCCESS;}}

很重要的struts.xml文件

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"><struts><constant name="struts.custom.i18n.resources" value="messages" /><span style="font-size:24px;">//</span>value是国际化资源配置文件的文件名<constant name="struts.i18n.encoding" value="utf-8" /><package name="I18N" extends="struts-default">        <action name="upload1" class="login.UploadAction">        <interceptor-ref name="fileUpload"><param name="maximumSize">10000000</param><param name="allowedTypes">image/gif,image/png,image/jpeg,image/jpg,image/pjpeg</param></interceptor-ref><interceptor-ref name="defaultStack"/><param name="savePath">./save</param><span style="color:#FF6666;">//这个是项目WebRoot目录下新建的文件夹save</span>        <result name="input">/fileUp.jsp</result><result name="success">/fileupsuccess.jsp</result></action></package></struts>    
总结:国际化配置资源文件名格式   文件名_语言种类_语言编码.properties  

例如  messages_zh_CN.properties   表示中文配置文件   messages_en_US.properties  英文配置文件

最重要的关系资源配置文件有效与否的是资源文件的路径问题    我今天调试了一下午查了各种资料都没有找出问题

刚刚将资源文件放在项目目录的src包下面就可以起作用了,切记,这是给我印象最深的一个了

我今天还遇到的一个问题就是<img src="<s:property value="'save/'+uploadFileName"/>"/>


value的值就是加载项目目录中保存图片的文件夹+文件名   save的路径一定要写对,否则即使上传成功也不能显示图片

0 0
原创粉丝点击