手机申购新股流程图:Struts2实现文件上传图片,并显示

来源:百度文库 编辑:中财网 时间:2024/05/10 13:44:10

Struts2实现文件上传,并显示。

第一、实现JSP

<%@ page contentType="text/html; charset=GBK" language="java" %>
<%@ include file="../../../inc/taglibs.jsp"%>



${html_title}








      


   
          
            
          
       
监测点位注册

  



   


  


   
   
   


   
   
   


   
   
   


   
   
   


   
   
   


   
   
   


   
   
   


   
   
   


   



     

监测点编号:*
   
   
监测点名称:*
   
   
监测点类型:*
  
   
监测类型:*
  
   
监测点经度:*
    °
   
监测点纬度:*
    °
   
监测点照片:

   
监测点描述:
   
   

     
     
   


第二、Action具体实现

     Action内添加如下字段。
   private File upload;
    private String uploadContentType;
    private String uploadFileName;

//接受依赖注入的属性
    private String savePath;
//接受依赖注入的方法
    public void setSavePath(String value){
        this.savePath = value;
    }

// private String getSavePath() throws Exception {
// return ServletActionContext.getRequest().getRealPath(savePath);
// }
public void setUpload(File upload) {
   this.upload = upload;
}
public void setUploadContentType(String uploadContentType) {
   this.uploadContentType = uploadContentType;
}
public void setUploadFileName(String uploadFileName) {
   this.uploadFileName = uploadFileName;
}
public File getUpload() {
   return (this.upload);
}
public String getUploadContentType() {
   return (this.uploadContentType);
}
public String getUploadFileName() {
   return (this.uploadFileName);
}

将流存入数据库
    BeanUtils.populate(uis, BeanUtils.describe(userinfo));
    uis.setRqDate(new java.util.Date());
  
//    System.out.println("sdfdsfdsfdsfs:"+uis.getRqImage().toString());
//    System.out.println("sdfdsfdsfdsfs:"+userinfo.getUpload());
   
    if(userinfo.getUpload()!=null){
     //设置图片
     FileInputStream fis = new FileInputStream(userinfo.getUpload());
     byte[] buffer = new byte[fis.available()];
     fis.read(buffer);
     uis.setRqImage(buffer);
//    byte[] s =uis.getRqImage();
//    for(int i=0; i//     System.out.print(s[i]);
//    }
    }
    if(userinfo.getRadializationQualityService().save(uis)!=null){
     userinfo.setInfoStr("监测点注册成功!","index.action?action=/manager/county_user/stakeout_dot_manage/stakeout_manage");
     return "succeed";
    }else{
     userinfo.setInfoStr("监测点注册失败","index.action?action=/manager/county_user/stakeout_dot_manage/stakeout_manage");
     return "error";
    }

 

第三、从数据库中读出图片

public String showStakeout(StakeoutAction userinfo){
   System.out.println("UserInfoCounty showStakeout");
   try{
  
   AbstractRadializationQuality ui = userinfo.getRadializationQualityService().findById(userinfo.getId());
   if(ui==null){
    userinfo.setInfoStr("没找到你选择监测点!","userInfoCounty_searchStakeout.action");
    return "error";
   }
  
   //BeanUtils.populate(userinfo, BeanUtils.describe(ui));
   BeanUtils.copyProperties(userinfo,ui);
   userinfo.setRqDate(ui.getRqDate());
//这里将图片流存入Session
userinfo.getSession().put("SES_StakeoutImage", userinfo.getRqImage());
  
   //设置显示 用户信息
   AbstractUserInfo au = (AbstractUserInfo)userinfo.getUserInfoService().findUserInfoId(ui.getRqUser());
   if(au!=null){
    userinfo.setShowUserName(au.getUiName());
    userinfo.setShowUiId(au.getUiId());
   }
  
   return "/manager/county_user/stakeout_dot_manage/stakeout_show";
  
   }catch(Exception e){
    e.printStackTrace();
    userinfo.setInfoStr("系统错误请联系管理员!","userInfoCounty_searchStakeout.action");
    return "error";
   }
}

 

第四、Servlet从Session中读出图片
package com.radialization.servlet;
import java.io.IOException;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class StakeoutImage extends HttpServlet {
private static final long serialVersionUID = -7862035188698463539L;
public void init(ServletConfig conf) throws ServletException {
   super.init(conf);
}
public void doGet(HttpServletRequest req, HttpServletResponse res)
    throws ServletException, IOException {
   byte[] image = (byte[])req.getSession().getAttribute("SES_StakeoutImage");
     java.io.OutputStream out = null;
        byte [] bytes = null;
   if(image!=null){
    java.io.ByteArrayInputStream bi = new java.io.ByteArrayInputStream(image);
   
            //二进制输出流
    res.setContentType( "multipart/form-data" );
            //得到输出流
            out = res.getOutputStream();
           
            //从输入流读取数据到输出流
            bytes = new byte [ 1024 ];
            while ( -1 != bi.read( bytes ) ) {
                 out.write( bytes );
            }
            //强制刷新输出流
            out.flush();
   }
}
public void doPost(HttpServletRequest req, HttpServletResponse res)throws ServletException, IOException {
   doGet(req, res);
}
}

第五、JSP页面中图片上的SRC访问Servlet

    监测点照片:
   
  
   
   

第六、Struts.xml配置
    

           
                image/bmp,image/x-png,image/gif,image/pjpeg
                300000
           

                       
        /${inputAddStakeout}.jsp
    

以上文章为原创,转载时就表示转载处。