满分了,都进来看下帮不帮忙吧 小菜用jsp上传附件到数据库,用longblob数据类型保存上传附件,可是出现内容丢失,上传压缩文件下载回来解压也出错,请问是什么原因?谁能给我发个这方面完整的实例么?要求是把附件放到数据库,;我在这里都10几天了也没人给我发,你们太过分了吧 收到经我调试通过马上给分,拜托各位大虾了。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我真是可怜啊,这样都没人帮,要写进数据库是为了夸Linux平台使用,和维护数据安全性了,这年代真是人情冷淡 只能顶了---------------------------http://www.5ai7.net/ 给你一段操作文件入oracle数据库的代码://将一个空的 blob 对象存入数据库 st1 = cn.createStatement(); st1.executeUpdate("INSERT INTO files (filename,content) VALUES("+filename+",empty_blob())"); //读数据库,获得 blob 对象句柄,将文件数据写入 blob st = cn.createStatement(); rset = st.executeQuery("select content from picture where filename="+filename); if (rset.next()){ Blob blob = rset.getBlob(1); //获得 blob 对象句柄 OutputStream blobOs = ( (oracle.sql.BLOB)blob).getBinaryOutputStream(); FileInputStream inStream = new FileInputStream(src); int length = (int)(new File(src).length()); byte[] buf = new byte[length]; inStream.read(buf); blobOs.write(buf); // 文件数据写入 blob blobOs.close(); } cn.commit(); 那种代码我写过,可是插入有数据库后数据会出现丢失,只有其中的一部分,我用的是longblob了 存硬盘有存硬盘的好处,存数据安全性高,管理方便,还可以夸平台不用修改代码,如果夸linux平台的话存硬盘很多代码都得改写 本来也是,这里只是你找帮助和建议的地方,可不能过分依赖她啊。一切靠自己,如果不能独挡一面的不是个好的程序员给你给最有用的建议:www.google.cn(屡试不爽,哈哈!) 或 http://java.sun.org如果还是搞不出来,就跟你的上司说:“我能力有限,这个实在是弄不出来了。” 数据库的速度本来就是平时我们做项目的瓶颈,往数据库中存文件的确有它的好处,但将大大降低你程序的效率。如果你实在要存的话,可以试着用一种变通的方法,用smartupload上传文件到服务器,然后把该文件读到数据库中。public static int doInsert(Connection conn,String cdoc_name,String cdoc_time,String cdoc_dept ,String address,String cdoc_type)throws Exception{ if(address==null){ return -1; } int ini=GetMaxID.getMaxID(conn,"document"); String cdoc_no=Integer.valueOf(ini).toString(); File file=new File(address); FileInputStream fis=new FileInputStream(file); int itn=0; StringBuffer sb=new StringBuffer("insert into document(CDOC_NO,CDOC_NAME,CDOC_TIME,CDOC_DEPT,BDOC_CONTENT,CDOC_TYPE) values('"); sb.append(cdoc_no+"','"); sb.append(cdoc_name+"','"); sb.append(cdoc_time+"','"); sb.append(cdoc_dept+"',"); sb.append("?,'"); sb.append(cdoc_type+"')"); System.out.println(sb); PreparedStatement pstmt=null; try{ pstmt = conn.prepareStatement(sb.toString()); pstmt.setBinaryStream(1,fis,fis.available()); itn = pstmt.executeUpdate(); }catch(Exception e){ //LogServlet.error(e.getMessage()); return -1; } finally{ if(pstmt!=null) pstmt.close(); } file.deleteOnExit(); return itn; } 晕死,仅仅 保存到数据库 可以跨平台 ?保存到文件同样可以跨平台啊~~楼主:要学会用baidu,google~~ 分两次操作:第一次插入除了longblob以外的其他字段值,第二次通过读字节流的方式更新该条记录的longblob字段。大家有没有更好的解决方案?可以拿出来讨论一下 undefined for the type jsp中JavaScript调用问题 关于自己写jsp标签的问题 请教一个jsp里href的小问题 prefuse问题求教 在struts中怎样配数据源? 请问关于struts的问题 一个程序的困惑!(叫板一个男/女程序员的困惑) 做一个三层树结构,帮帮忙! 请教Hibernate配置问题 请问如何知道当前使用的JSP和Servlet的版本? 求网页二边加入可关闭的对联代码,来者有分..
http://www.5ai7.net/
//将一个空的 blob 对象存入数据库
st1 = cn.createStatement();
st1.executeUpdate("INSERT INTO files (filename,content) VALUES("+filename+",empty_blob())");
//读数据库,获得 blob 对象句柄,将文件数据写入 blob
st = cn.createStatement();
rset = st.executeQuery("select content from picture where filename="+filename);
if (rset.next()){
Blob blob = rset.getBlob(1); //获得 blob 对象句柄
OutputStream blobOs = ( (oracle.sql.BLOB)blob).getBinaryOutputStream();
FileInputStream inStream = new FileInputStream(src);
int length = (int)(new File(src).length());
byte[] buf = new byte[length];
inStream.read(buf);
blobOs.write(buf); // 文件数据写入 blob
blobOs.close();
}
cn.commit();
一切靠自己,如果不能独挡一面的不是个好的程序员
给你给最有用的建议:www.google.cn(屡试不爽,哈哈!) 或 http://java.sun.org
如果还是搞不出来,就跟你的上司说:“我能力有限,这个实在是弄不出来了。”
public static int doInsert(Connection conn,String cdoc_name,String cdoc_time,String cdoc_dept ,String address,String cdoc_type)throws Exception{
if(address==null){
return -1;
}
int ini=GetMaxID.getMaxID(conn,"document");
String cdoc_no=Integer.valueOf(ini).toString();
File file=new File(address);
FileInputStream fis=new FileInputStream(file);
int itn=0;
StringBuffer sb=new StringBuffer("insert into document(CDOC_NO,CDOC_NAME,CDOC_TIME,CDOC_DEPT,BDOC_CONTENT,CDOC_TYPE) values('");
sb.append(cdoc_no+"','");
sb.append(cdoc_name+"','");
sb.append(cdoc_time+"','");
sb.append(cdoc_dept+"',");
sb.append("?,'");
sb.append(cdoc_type+"')");
System.out.println(sb);
PreparedStatement pstmt=null;
try{
pstmt = conn.prepareStatement(sb.toString());
pstmt.setBinaryStream(1,fis,fis.available());
itn = pstmt.executeUpdate();
}catch(Exception e){
//LogServlet.error(e.getMessage());
return -1;
}
finally{
if(pstmt!=null)
pstmt.close();
}
file.deleteOnExit();
return itn;
}
保存到文件同样可以跨平台啊~~楼主:要学会用baidu,google~~
第一次插入除了longblob以外的其他字段值,
第二次通过读字节流的方式更新该条记录的longblob字段。
大家有没有更好的解决方案?可以拿出来讨论一下