当前位置:首页 » 文件管理 » hibernate上传图片

hibernate上传图片

发布时间: 2023-04-08 09:50:06

Ⅰ 求用J2EE(struts2,hibernate,spring)做出的图片评论系统,里面可以添加图片显示图片。

源代码是没有的,我告诉你怎么做。
1 搭梁禅建环境,配好数据库,建立图片评论表,图片和逗薯评论存在对应关系
2 做图片上传功能,把图片上传到服务器上存放,同时数据库中存放图片在服务器上的位置
3 显示图片,同时在图片下建立评论文本框,提交评论
注:系统一般都是能登录的,因此要橡指尘有用户管理等对应功能

Ⅱ hibernate+struts+插件ckeditor框架中如何在jsp页面上传图片

imgsrec="路径吗"

Ⅲ struts中上传图片显示图片

楼主你好:
你的photo名称(upfileFileName)和struts.xml中的photo名称配置要一岁皮致,否则struts无法抓取到你的photo,当然也就空指针了。你把upfileFileName改成photoFileName,而且得有下面好悔这两个属性和对应的setter和getter方法。
//文件对象
private File photo;
//文件名乎袜差字
private String photoFileName;

Ⅳ 在struts2+hibernate中用fck编辑器,图片可以上传但是保存的路径不对。

代码。。

Ⅳ hibernate如何保存blob数据

首先你得搞清楚一点BLOB是二进制大对象,是ORACLE的数据类型,它对应到java中有两种方式:

byte[] 和java.sql.Blob(先搞清楚这重点哦)

我给你直接复制重点代码,希望可以帮到你

1 数据库中定义成BLOB类型,这个你自己定义吧(表名叫bigobject),~~~~~不过给你截个图吧


2 综上,把oracle数据库中的BLOB映射到java中有两种情况的,即java.sql.Blob和byte[],下面先说byte[]的映射

++++++++++++++++++++++++Bigobject.hbm.xml映射文件+++++++++++++++++++++++

<hibernate-mapping>

<class name="entity.Bigobject" table="BIGOBJECT" >

<id name="id" type="java.lang.Integer">

<column name="ID" precision="6" scale="0" />

<generator class="native" />

</id>

<property name="tclob" type="java.lang.String">

<column name="TCLOB" />

</property>

<property name="tblob" type="byte[]"> //!!!!!注意,这里是byte[]

<column name="TBLOB" />

</property>

</class>

</hibernate-mapping>

++++++++++++++++++++以下是bigobject实体类(用hibernate映射的)+++++++++++


public class Bigobject implements java.io.Serializable {

// Fields


private Integer id;

private String tclob;

private byte[] tblob; //!!!!!注意,这里是byte[]



// Constructors


/** default constructor */

public Bigobject() {

}


/** full constructor */

public Bigobject(String tclob, byte[] tblob) {

this.tclob = tclob;

this.tblob = tblob;

}


御谨 // Property accessors


public Integer getId() {

return this.id;

}

public void setId(Integer id) {

镇册基 this.id = id;

}


public String getTclob() {

return this.tclob;

}

public void setTclob(String tclob) {

this.tclob = tclob;

}


public byte[] getTblob() {

return this.tblob;

}

public void setTblob(byte[] tblob) {

this.tblob = tblob;

}

========================控制台测试代码(读取图片到数据库,

再从数据库读取图片到特定路径下)=======================================

/**

* 按大对象数据类型BLOB的byte[]类型

* CLOB的java.lang.String

* 映射 并插入数据

* @author Administrator

*

*/

public class Test {

Session session=null;

Transaction tx=null;


/**

* 持久化数据,读取本地图片到数据库

*/

public void get1(){

姿态 try {

session=HibernateSessionFactory.getSession();

//前提是文件必须放在src路径下,读取的是当前项目的根目录

// InputStream input=this.getClass().getResourceAsStream("/file.txt");

//加载任意路径下的图片、大文件、视屏等(括号里的参数图片是绝对路径)

InputStream input=new FileInputStream("G:/在线拍卖/page/images/gou1.jpg");

tx=session.beginTransaction();

byte[] byteArray=new byte[input.available()];

input.read(byteArray);

input.close();

Bigobject b=new Bigobject();

b.setId(1);

b.setTblob(byteArray);

b.setTclob("一条狗");

session.save(b);

tx.commit();

} catch (HibernateException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

/**

* 从数据库bigObject表中按主键读取一条数据

* @throws IOException

*/

public void get2() throws IOException{

session=HibernateSessionFactory.getSession();

Bigobject b=(Bigobject)session.get(Bigobject.class, 1);

System.out.println("文本内容是:"+b.getTclob());

//吧字节数组数据通过字节流,输出到当前工程根目录下2.jpg中

if(b.getTblob()!=null){

FileOutputStream out=new FileOutputStream("dog1.jpg");

out.write(b.getTblob());

out.close();

}

}

public static void main(String[] args) throws IOException {

test6 t=new test6();

t.get1();

t.get2();

}

===================hibernate.cfg.xml的代码页给你贴一下吧,不过这都是自动生成的,你自己动手生成吧,一下是我自己的,想用的话得改参数的=======================

<?xml version='1.0' encoding='UTF-8'?>

<!DOCTYPE hibernate-configuration PUBLIC

"-//Hibernate/Hibernate Configuration DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">


<!-- Generated by MyEclipse Hibernate Tools. -->

<hibernate-configuration>


<session-factory>

<property name="dialect">

org.hibernate.dialect.Oracle9Dialect

</property>

<property name="connection.url">

jdbc:oracle:thin:@localhost:1521:accp7 //!!!数据库名称

</property>

<property name="connection.username">scott</property>//!!!!!用户名

<property name="connection.password">accp</property>//!!!!!!密码

<property name="connection.driver_class">

oracle.jdbc.OracleDriver

</property>

<property name="myeclipse.connection.profile">scott</property>//!!!!!数据库实例名

<mapping resource="entity/Bigobject.hbm.xml" />

</session-factory>


</hibernate-configuration>


3 上面介绍了BLOB的byte[]存储,下面介绍另一种方式java.lang.Blob方式,还是直接粘贴代码

++++++++++++++++++++数据库还是上面图片上的,保持不变++++++++++++++++++++++

====================Bigobject.hbm.xml映射文件======================

<hibernate-mapping>

<class name="bean.Bigobject" table="BIGOBJECT">

<id name="id" type="java.lang.Integer">

<column name="ID" precision="6" scale="0" />

<generator class="native" />

</id>

<property name="tclob" type="java.sql.Clob">//这里用的是Clob的另一种方式,有疑问再问

<column name="TCLOB" />

</property>

<property name="tblob" type="java.sql.Blob">//!!!!!注意,这里是java.sql.Blob

<column name="TBLOB" />

</property>

</class>

</hibernate-mapping>


========================以下是bigobject实体类=======================

import java.sql.Blob;

import java.sql.Clob;


/**

* Bigobject entity. @author MyEclipse Persistence Tools

*/


public class Bigobject implements java.io.Serializable {


// Fields


private Integer id;

private Clob tclob;

private Blob tblob;


// Constructors


/** default constructor */

public Bigobject() {

}


/** full constructor */

public Bigobject(Clob tclob, Blob tblob) {

this.tclob = tclob;

this.tblob = tblob;

}


// Property accessors


public Integer getId() {

return this.id;

}


public void setId(Integer id) {

this.id = id;

}


public Clob getTclob() {

return this.tclob;

}


public void setTclob(Clob tclob) {

this.tclob = tclob;

}


public Blob getTblob() {

return this.tblob;

}


public void setTblob(Blob tblob) {

this.tblob = tblob;

}

}


==========================对应的控制台测试代码===========================


/**

* 讲字符串大对象声明为java.sql.Clob类型,二进制大对象声明为java.sql.Blob类型

* @author Administrator

*

*/

public class test7 {

Session session=null;

Transaction tx=null;

public void get1(){

try {

session=HibernateSessionFactory.getSession();

//前提是文件必须放在src路径下

InputStream input=this.getClass().getResourceAsStream("/upload.txt");

//加载任意路径下的图片、大文件、视屏等

// InputStream input=new FileInputStream("F:/1.jpg");

tx=session.beginTransaction();

byte[] byteArray=new byte[input.available()];

input.read(byteArray);

input.close();

Bigobject b=new Bigobject();

//依据二进制数据创建一个Blob对象 !!!!!重点 务必看清楚

b.setTblob(Hibernate.createBlob(byteArray));

//依据字符串数据创建一个Clob对象 !!!!!重点务必看清楚

b.setTclob(Hibernate.createClob("上传图片"));

session.save(b);

tx.commit();

} catch (HibernateException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

public void get2(){

session=HibernateSessionFactory.getSession();

Bigobject obj=(Bigobject)session.get(Bigobject.class, 131);

//把Clob对象通过字符流读入到内存,并输出


try {

if(obj.getTclob()!=null){

Reader read=obj.getTclob().getCharacterStream();

char[] chArray=new char[1];

StringBuilder sb=new StringBuilder();

while(read.read(chArray)!=-1){

sb.append(new String(chArray));

}

System.out.println(sb.toString().trim());

}

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

//把Blob对象通过字节流读输出,并保存到当前工程根目录下,取名为upload.txt

try {

if(obj.getTblob()!=null){

InputStream in=obj.getTblob().getBinaryStream();

FileOutputStream fos=new FileOutputStream("upload.txt");

int b=-1;

while((b=in.read())!=-1){

fos.write(b);

}

fos.close();

in.close();

}

} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

public static void main(String[] args) {

test7 t=new test7();

t.get1();

t.get2();

}

}

++++++++++++++++++++hibernate.cfg.xml同上++++++++++++++++++++++++++++



===================================================================

综上,Blob与Clob(字符串大对象)的写入读出的两种方法都有了(Clob的两种方法你自己捎带看看),都是完整代码,粘贴即可用,整理了两个多小时,希望对你有帮助!

Ⅵ hibernate+struts 批量上传图片上传,怎么做。要插件吗图片保存在数据库中还是项目中。

图片不是保纳铅和存到数据激岩中,在struts.xml文洞盯件里加个<constant name="struts.multipart.maxSize" value="100000000" />

Ⅶ struts2+Hibernate上传图片,如何实现图片可以放在服务器上;数据库保存图片路径。

楼主
struts2
上传代码会写吗?
1.
struts2本身提供了上传
拦截器
,用struts2实现上传功能,并获得保存地址
配置fileUpload的拦截器此瞎岁
2.
获得文件存森睁储地址(上传时指定)+文件神穗名
3.
调用保存方法(
Hibernate
),将文件路径存入数据库
在一个事务中完成即可!
如:有哪块有难点,及时追问。good
luck!

热点内容
编程很累吗 发布:2025-05-15 02:29:25 浏览:551
疫情期间访问国外网络 发布:2025-05-15 02:24:24 浏览:247
我的世界网易版游戏服务器 发布:2025-05-15 02:23:46 浏览:221
全球编程网站 发布:2025-05-15 02:22:55 浏览:334
编程猫知乎 发布:2025-05-15 02:18:00 浏览:631
服务器转接搭建 发布:2025-05-15 02:12:50 浏览:518
编译好的内核如何升级另一台主机 发布:2025-05-15 02:00:06 浏览:759
弹反脚本 发布:2025-05-15 01:58:24 浏览:587
安卓按键大师怎么用 发布:2025-05-15 01:54:12 浏览:688
手机ea服务器连不上怎么办 发布:2025-05-15 01:35:03 浏览:451