一般来说,数据库中存储图片,视频,等…这些二进制文件,都是存储文件的路径。以下是数据库中直接存二进制大对象的方法。ORACLE 中直接存储图片的方法。
-
创建表,注意:插入图片的列要定义成BLOB类型
create table image_lob(t_id varchar2(5) not null,t_image blob not null); -
创建图片目录,image为目录名,并授权.
create or replace directory IMAGE as ‘/home/oracle/image’;
grant read,write on directory IMAGE to chester;
上传图片值该目录 -
创建存储过程,filename为图片的名字,如‘abc.png’
create or replace procedure img_insert(tid varchar2, filename varchar2) as
f_lob bfile;
b_lob blob;
begin
insert into image_lob
(t_id, t_image)
values
(tid, empty_blob()) return t_image into b_lob;
f_lob := bfilename('IMAGE', filename);
dbms_lob.fileopen(f_lob, dbms_lob.file_readonly);
dbms_lob.loadfromfile(b_lob, f_lob, dbms_lob.getlength(f_lob));
dbms_lob.fileclose(f_lob);
commit;
end;
-
执行上面的存储过程,实现图片的插入
begin
img_insert(‘1’,‘abc.png’);
end; -
查看表
select * from image_lob;