Struts1.3中图片上传后直接显示
2008-04-12 08:00
274 查看
因为毕业设计需要,今天晚上看了看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上一个帖子上看到的,但是我试过不与web-inf并列也行的。而且这里可以跟"../")。比如我就在我的工程下建立了一个"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
//定义自己的穿到服务器的文件名。第二个+后面是得到的文件后缀名。
String filename = uploadForm.getName() + "."
+ (ff.getFileName().split("/.")[1]);
//得到要上传到的绝对路径,比如: D: omcat6webappsUploadupload
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();
}
}
}
我测试过ie7.0和ff都可以直接显示。但做毕业设计的时候,有一个浏览器图片缓存问题,一直解决不了。
我用的是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上一个帖子上看到的,但是我试过不与web-inf并列也行的。而且这里可以跟"../")。比如我就在我的工程下建立了一个"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
//定义自己的穿到服务器的文件名。第二个+后面是得到的文件后缀名。
String filename = uploadForm.getName() + "."
+ (ff.getFileName().split("/.")[1]);
//得到要上传到的绝对路径,比如: D: omcat6webappsUploadupload
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();
}
}
}
我测试过ie7.0和ff都可以直接显示。但做毕业设计的时候,有一个浏览器图片缓存问题,一直解决不了。
相关文章推荐
- ASP.Net中使用FreeTextBox图片上传功能的修改(点上传直接返回编辑器显示图片)
- js点击上传图片后直接显示在内容框中
- struts上传与显示图片例子参考(一)
- 用struts上传图片,中文命名的图片无法显示
- struts上传与显示图片例子参考(二)
- FileUpload上传图片直接浏览显示(没有上传按钮如何上传)
- struts中用kindeditor实现的图片上传并且显示在页面上
- 04-用struts上传图片,中文命名的图片无法显示
- 网页图片直接显示与上传
- 图片上传,直接在网页中显示(支持IE,谷歌,火狐浏览器)
- 上传图片不与后台交互直接显示
- 图片上传直接显示
- Java Struts图片上传至指定文件夹并显示图片
- Java Struts图片上传至指定文件夹并显示图片功能
- 【File Field控件】上传图片的同时直接显示图片的属性设置方法
- jsp图片上传到数据库里面之后,不能直接在页面上显示,而是提示下载
- 上传控件图片直接在页面显示
- 用struts上传图片,中文命名的图片无法显示
- JavaScript 图片上传后base64转码直接显示
- 图片上传直接显示