假如,原先这个pic字段的值为1234,但是执行完下面的更新操作后用流输出根本就看不到图片,也没有出现任何错误!
//更新字段pic为一张图片
for(int i=0;i<myUpload.getFiles().getCount();i++){
com.jspsmart.upload.File myFile=myUpload.getFiles().getFile(i);
if(!myFile.isMissing()){
java.io.File file=new java.io.File(myFile.getFilePathName());
java.io.FileInputStream fis=new java.io.FileInputStream(file);
con=DBMgr.getConnetion();
con.setAutoCommit(false);
sql="update mytable set pic=? where id=?";
pstmt=con.prepareStatement(sql);
pstmt.setBinaryStream(1,fis,(int)file.length());
pstmt.setInt(2,1);
pstmt.executeUpdate();
con.commit();
}
}
//输出图片
sql="select pic from mytable where id=?";
pstmt=con.prepareStatement(sql);
pstmt.setInt(1,1);
rs=pstmt.executeQuery();
if(rs.next()){
res.reset();
res.setContentType("image/jpeg");
ServletOutputStream sout=res.getOutputStream();
InputStream in=rs.getBinaryStream(1);
byte buff[]=new byte[1024];
int i;
while((i=in.read(buff))!=-1){
sout.write(buff);
}
in.close();
sout.close();
}
3 个解决方案
#1
最好不将图片文件插入到数据库中。。
只将文件名放进去。。。。
真实文件放到一目录下。。这样数据库较小。。
只将文件名放进去。。。。
真实文件放到一目录下。。这样数据库较小。。
#2
不会。帮顶。
#3
谁知道我上面的代码错在什么地方呀?
为什么不能得到图片呢?
为什么不能得到图片呢?
#1
最好不将图片文件插入到数据库中。。
只将文件名放进去。。。。
真实文件放到一目录下。。这样数据库较小。。
只将文件名放进去。。。。
真实文件放到一目录下。。这样数据库较小。。
#2
不会。帮顶。
#3
谁知道我上面的代码错在什么地方呀?
为什么不能得到图片呢?
为什么不能得到图片呢?