当前位置: 代码迷 >> Java Web开发 >> 关于structs上传图片到数据库的有关问题,代码如下
  详细解决方案

关于structs上传图片到数据库的有关问题,代码如下

热度:5306   发布时间:2013-02-25 21:19:08.0
关于structs上传图片到数据库的问题,代码如下
这是action代码: package cn.itcast.action;

import java.io.File;

import org.apache.commons.io.FileUtils;
import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class HelloWorldAction extends ActionSupport {
private File image;
  private String imageFileName;
public File getImage() {
return image;
}
public void setImage(File image) {
this.image = image;
}
public String getImageFileName() {
return imageFileName;
}
public void setImageFileName(String imageFileName) {
this.imageFileName = imageFileName;
}
 
public String execute() throws Exception {
System.out.println("reath");
String realpath=ServletActionContext.getServletContext().getRealPath("/images");
System.out.println("realpath");
if(image!=null){
File savefile=new File(new File(realpath),imageFileName);
if(!savefile.getParentFile().exists()) 
savefile.getParentFile().mkdirs();
FileUtils.copyFile(image, savefile);
 
ActionContext.getContext().put("message", "chernggong");
 
 
}
 
return "SUCCESS";
}
 
}



DAO代码package cn.itcast.DAO;


 
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import cn.itcast.DB.IWrapper;
import cn.itcast.DB.JdbcTemplate;
import cn.itcast.music.PhotoInfo;

 ;

public class PhotoDAO implements IWrapper<PhotoInfo> {
JdbcTemplate<PhotoInfo> jdbcTemplate;
public PhotoDAO(){
this.jdbcTemplate=new JdbcTemplate<PhotoInfo>(this);
}
public void add(String picture ) throws Exception{
String sql="insert into savepicture(picture) values(?)";
Object[] params=new Object[]{picture};
jdbcTemplate.executeUpdate(sql, params);
}
 
 
 
 
public List<PhotoInfo> wrap(ResultSet rs) throws Exception {
List<PhotoInfo> list=new ArrayList<PhotoInfo>();
while(rs.next()){
PhotoInfo photo=new PhotoInfo(); 
photo.setId(rs.getInt("id"));
photo.setPicture(rs.getString("picture"));
list.add(photo);
}
return list;
}
}

 sql2000的数据库就只有id,和picture,picture是image类型的,现在插入数据库不成功,求帮忙看下哪里错了,最好能帮我改代码。在DAO中实现插入数据库的功能还有jsp页面读取数据库中的代码 ,谢谢,万分火急。。给钱写也行啊。。

------解决方案--------------------------------------------------------
一般图片不会存入数据库的。在数据库中存入图片的存放路径即可。
这样每次读取的就根据图片的路径去加载图片
------解决方案--------------------------------------------------------
插入参照下面的,
Java code
public void add(String picture ) throws Exception{    jdbcTemplate.execute(                "insert into savepicture(picture) values(?)",                new PreparedStatementCallback() {                    public Object doInPreparedStatement(PreparedStatement ps)                            throws SQLException, DataAccessException {                                       FileInputStream fis = null;                 try {                     fis = new FileInputStream(picture);                     pst = con.prepareStatement("insert temp values(?)");                     pst.setBinaryStream(1, fis, (int) file.length());                     pst.executeUpdate();                 } catch (IOException ex) {                   ex.printStackTrace();                 } finally {                   try {                    fis.close();                   } catch (IOException ex2) {                    ex2.printStackTrace();                   }                 }                         return null;                    }                });    }