因为毕业设计需要,今天晚上看了看Struts1.3中的FormFile机制。顺便从网上看了看如何在上传后直接在页面中显示刚传上的图片。 总结下,顺便分享下。先声明,我还是学习阶段,有哪些地方做得不很好欢迎指正批评啊!!互相校习嘿
我用的是MyEclipse6.0.1和Tomcat6(具体记不得了)
首先自己建立了一个Upload的工程。添加struts1.3支持。。。。。废话不说了啊。直接代码
建立一个upload.jsp页面 代码如下:
<%@ page language="java" pageEncoding="gbk"%> <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %> <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %> <%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %> <%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html:html lang="true"> <head> <html:base /> <title>图片上传</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> 清选择需要上传图片: <html:form action="upload.do" method="post" enctype="multipart/form-data"> <html:text property="name"></html:text> <html:file property="pic"></html:file> <html:submit value="上传"></html:submit><br/> <html:errors/> </html:form> <img alt= " " src="${files }" /> <!--注意这里用力一个EL语句而且这里的files是在request中的,而且这 个"files"路径只能是“图片所在的文件夹/图片名称”这个文件夹必须和WEB-INF是并列的(在csdn上一个帖子上看到的)。比如我就在我的工程下建立了一个"upload"文件夹。 上传的文件名称为sonw.bmp然后这里src="upload/snow.bmp"--> <br/> </body> </html:html> |
建立于此jsp对应的form于action 具体form代码我就不贴了。不难。里面也没什么东西。只有这一点: private FormFile pic; 和它的geter & seter在action中要用到。这是得到上传文件的途径。
action的代码贴一下吧。
//包名 package com.llb.struts.action; //引入。。。不说废话了 import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.upload.FormFile; import com.llb.struts.form.UploadForm; public class UploadAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { UploadForm uploadForm = (UploadForm) form; //从uploadform中得到定义的一个 FormFile ff = uploadForm.getPic(); //从uploadform中得到定义的一个pic #p#分页标题#e# //定义自己的穿到服务器的文件名。第二个+后面是得到的文件后缀名。 String filename = uploadForm.getName() + "." + (ff.getFileName().split("\\.")[1]); //得到要上传到的绝对路径,比如: D:\tomcat6\webapps\Upload\upload String path = this.getServlet().getServletContext().getRealPath("/") + "upload\\"; //这是为在页面上显示此图片定义的相对路径吧应该是。这里得到的是 "upload/图片文件名" String files = "upload/" + filename; //将相对路径写入request里面以便在Forward之后用EL来调用 request.setAttribute("files", files); try { //下面是上传文件的具体写入:都是IO不用多说了 OutputStream os = new FileOutputStream(new File(path + filename)); byte b[] = ff.getFileData(); //这里的ff是从form得来的要上传的文件 os.write(b); os.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return mapping.getInputForward(); } } } |
剩下的都没什么了。我没有写验证。先实现了再说。呵呵,回头毕业设计里再加上吧。
快4点半了。困了。先睡了。
希望对大家能有帮助啊!!
评论 {{userinfo.comments}}
{{child.content}}
{{question.question}}
提交