java如何将图片类型的数据存入mysql 数据库

java如何将图片类型的数据存入mysql 数据库,第1张

有一个比较简单的方法可以得到这个类型名称

通过

resultSet

=

statementexecuteQuery("select

image列

from

table");

resultSetMetaData

=

resultSetgetMetaData();

Systemoutprintln(resultStetMetaDatagetColumnClassName(1));

你说的这个问题,其实是表的设计问题。

只要在t_b中,设计列为3列即可。

id

,

t_a_id

,

picture

添加多个,不过是sql、语句。

最简单的办法,是利用for()循环,如:

for(int

i

=

0;i<数;i++){

//你的sql *** 作语句如。

//insert

i

into

t_b

}

分给偶吧。。

^

^!

我这里给你介绍下在struts框架下的上传的三步。

1、在pojo里,把字段设置为byte[]类型

private byte[] image;

2、如果是采用struts的话,只需要

setImage(formbeangetImage()getFileData());

前提是定义一个formbean类,使用getFileData()方法将类型转化为byte[]类型。

3、在前台页面里这样,上传的控件名称为image,类型为file

<input type="file" name="image" size="30" value="">

将插入数据库时,首先将转换成二进制格式,同样读取的时候将二进制再解析回来就OK了

解析二进制:

int length = 0;

ServletOutputStream toClient = null;

byte[] buf = null;

Blob image = dengjigetTupian(); //dengji 实体 从数据库中获取

try {

length = (int)imagelength();//取得流中可用的字节总数

buf = imagegetBytes(1, length);//获取Blob字节数组

thisgetResponse()setContentType("image/jpeg");

thisgetResponse()setHeader("Pragma", "No-cache");

thisgetResponse()setHeader("Cache-Control", "no-cache");

thisgetResponse()setDateHeader("Expires", 0);

toClient = thisgetResponse()getOutputStream();//获取输出流

for(int i = 0 ; i < buflength ; i++ ){

toClientwrite(buf[i]);//输出到页面

}

toClientclose();//关闭输出流

} catch (SQLException e) {

eprintStackTrace();

} catch (IOException e) {

eprintStackTrace();

}

如果要存数据库的话,数据库存字段用blob形式的(照片:zp为例)。

而且不能直接存,在存之前zp字段先插入一个emptyBLOB(),

然后select ZP from 表 for update。再用输入流的形式写进去。

// 先检索出来字段,必须使用oracle的类:oraclesqlBLOB

oraclesqlBLOB blob = null;

if (rsnext())

{

blob = (oraclesqlBLOB) rsgetBlob("ZP");

// 到数据库的输出流

OutputStream outStream = blobgetBinaryOutputStream();

// 将输入流写到输出流

byte[] b = new byte[blobgetBufferSize()];

int len = 0;

while ((len = isread(b)) != -1)

{

outStreamwrite(b, 0, len);

// blobputBytes(1,b);

}

isclose();

outStreamflush();

outStreamclose();

}

取照片的话,取出来转化成流的形式直接创建jpg文件就行了。

Blob b = rsgetBlob("ZP");

File f = null;

if (b != null) {

is = bgetBinaryStream();

f = new File( "c:\\zpjpg");

if (!fexists()) {

fcreateNewFile();

}

os = new FileOutputStream(f);

int len;

byte buf[] = new byte[2048];

while ((len = isread(buf)) != -1) {

oswrite(buf, 0, len);

}

isclose();

osflush();

osclose();

}

强烈建议只存取照片路径,这样方便。

我以前也碰到过这个问题,

数据库这一块的话是 存的路径(注意相对路径跟绝对路径),就保存到服务器中就可以了。

ueditor没用过 以前用的是fckeditor,可以去ueditor的官网看下。

这里有个ueditor的配置 看下咯>

java基本上可以任何数据库进行连接,比如:mysql,sqlserver,oracle等,只是连接的方式,驱动不同罢了。

存的问题:一般来讲都是存的路径,如果你非要存也能存,需要把转换成二进制字节,进行存储。

如果强调安全,存二进制。

如果强调方便,存路径。

以上就是关于java如何将图片类型的数据存入mysql 数据库全部的内容,包括:java如何将图片类型的数据存入mysql 数据库、用java如何一次性上传多张图片到数据库、求java把图片写入mysql数据库的代码!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9406856.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存