各位好.  在用做文件上传时遇到问题,是这样的,我是要把文件保存到数据库里面的,我是这样写的:
public boolean saveFile(String fileName, InputStream is) {
  String sql = "insert into my_video(video_id,video_name,video_content,upload_time) values(videoSeq.Nextval,?,?,sysdate)";
Connection conn = null;
PreparedStatement ps = null;
try {
conn = Transaction.getConnection();
ps = conn.prepareStatement(sql);
// System.out.println(is.available());  可以得到文件的长度
ps.setString(1, fileName);
ps.setBinaryStream(2, is, is.available());
ps.executeUpdate();
} catch(Exception e) {
e.printStackTrace();
                        return false;
} finally {
DBConnection.releaseConnection(conn, ps, null);
}
return true;
}问题就是. 如果我把这个 web 程序部署到 tomcat 上运行的话,那是没有一点问题,上传多大文件都可以.
如果我部署到 weblogic 上运行的话,上传 1kb左右的还行,稍大一点点就不行了,
报错:java.sql.SQLException: ORA-01460: 转换请求无法实现或不合理.
我用的是 jdk1.4,classes12.jar.

解决方案 »

  1.   

    你直接这样把一个输入流放到数据库里这样可行吗?它的缓存有限制的吧
    我觉得更好的方法是你应该把public boolean saveFile(object o),传入一个对象,这个上传的文件的所有属性都在这个对象中,这样就没问题了 
      

  2.   

    感觉应该是跟你的weblogic 配置有关系!在看看吧
      

  3.   

      我觉得也是.可是不知道怎么配置,
    不过我要是把 数据库表里面的 Blob 类型的字段改成 Long Raw 类型就没问题了。可是这样会丢失原来的数据
    肯定是不行的. 再帮我想想咯.