这种代码网上不是一大片吗
public boolean storeImage(File file){try{
// 打开文件
FileInputStream fin = new FileInputStream(file);
// 建一个缓冲保存数据
ByteBuffer nbf = ByteBufferallocate((int) filelength());
byte[] array = new byte[1024];
int offset = 0, length = 0;
// 读存数据
while((length = finread(array)) > 0){
if(length != 1024) nbfput(array,0,length);
else nbfput(array);
offset += length;
}
// 关闭文件
finclose();
// 新建一个数组保存要写的内容
byte[] content = nbfarray();
String sql = "insert into images (bin_data) values () ";
PreparedStatement pstmt = connprepareStatement(sql);
pstmtsetBytes(1,content);
pstmtexecute();
pstmtclose();
}catch(Exception e){
eprintStackTrace();
return false;
}
return true;
}
的存储有两种:
(1)存储字符串类型的的地址 显示页面使用image标签
(2)数据库有一种类型累Blok(不知道也错没)还有好多大类型,使用这个来存储
,但他存储的是2进制,在存储前先使用io读取,转成2进制,然后就可以存储在数据库中,
读取时也是用io
我不同意楼上两位的观点,这个也是分场合的,比如仅仅是不是像其他的几十兆的甚至几百兆的完全可以直接存数据库,比如你的网站会员有10万。用文件夹管理这10万会员的?万一有人不小心移动位置或者被删除之类的情况会很难处理,再说效率有有谁真的试过呢?jpa跟spring整合的时候,如果是spring31版本以下是需要设置一个lobhandler的bean。这里面会有默认的lobhandler以及专为oracle 9i的设置,具体的你搜索spring lobhandler。如果是spring31就不需要任何的配置的,比如private byte[] image其上加注解@Basic @Lob然后直接调用dao或者repository的save(entity)就能存储了当然你的byte[]得是从文件转来的,至于显示如果是struts2最简单的就是使用类型为stream的result type。如果是spring mvc注解@ResponseBody具体的代码有点多也不可能直接写在这里我现在上班晚上回去拷贝一份给你。各种实现方法的都有。
以上就是关于java:servlet接收图片,并把它保存到数据库中全部的内容,包括:java:servlet接收图片,并把它保存到数据库中、java如何向SQLserver库中插入图片、java用JPA怎么把图片存入到Oracle数据库中,然后展示在jsp页面注:保存的图片用Oracle.sql.BLOB类型等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)