Struts1.3中图片上传后直接显示

因为毕业设计需要,今天晚上看了看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都可以直接显示。但做毕业设计的时候,有一个浏览器图片缓存问题,一直解决不了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值