主题
:系统中图片存储的解决方案——将图片放在服务器上,将其路径存入数据库
方案明细: 1 、用户选择的图片由系统将其拷贝至服务器 "// server /mcphoto" 中,每个文件夹限制存放图片
1000 张
2 、用户选择图片后,系统自动检查当前使用文件夹内图片数量是否超出限制,若否,则继续使
用,若是,则新建一文件夹
方案明细: 1 、用户选择的图片由系统将其拷贝至服务器 "// server /mcphoto" 中,每个文件夹限制存放图片
1000 张
2 、用户选择图片后,系统自动检查当前使用文件夹内图片数量是否超出限制,若否,则继续使
用,若是,则新建一文件夹
3
、保存图片时,系统自动检查该物品图片是否是新增图片,若是,则将当前使用文件夹中文件
数加 1
数加 1
4
、对于以前在数据库储存的图片均已转换为图片文件放在
"//
server
/mcphoto/old"
中,若对其
更换图片,则将新图片放入当前使用文件夹,同时将原图片文件删除
整理人
:
icefireleaf
整理时间:
2006-12-20
备注
:该方案是在公司改将图片存入数据库为将图片路径存入数据库之后编写,因此该方案增加了对更换从数据库中转换出来的图片时的处理,
old
文件夹内存放的是以前在数据库中存放,现转换出来的图片,更改存储图片方案后用户选择的图片均放在其它文件夹(即以‘
n
’开头的文件夹)
//----------------------------------------------------------------//
string ls_picture_path,ls_old_picturepath
string ls_docname,ls_named
int li_value
int li_filenumber,li_return
string ls_filepath,ls_filename,ls_newfile
string ls_oldfile,ls_oldfilename
int li_id
//
if dw_edit_sub.getrow()<1 then
return
end if
//
li_value=GetFileOpenName("
请选择物品图片
",ls_docname,ls_named,".jpg","jpg files(*.jpg),*.jpg")
if li_value=1 then
//
表
ormaster_file
记录存放图片文件的文件夹的名称、路径、当前存放图片数量
select id,file_path,file_name,file_number
into :li_id,:ls_filepath,:ls_filename,:li_filenumber
from ormaster_file
order by id desc using sqlca;
//
if li_filenumber<=1000 then
//
文件夹内图片数量未超出限制,继续使用该文件夹
ls_picture_path=ls_filepath + "/" + ls_filename + "/" + is_stk_no + ".jpg"
else
//
文件夹内图片数量超出限制,新建一文件夹供保存图片使用,文件夹以该文件夹存满时系统已存放图片数的理论值命名
li_id=li_id + 1
ls_filename="n" + string(li_id*1000)
ls_newfile=ls_filepath + "/" + ls_filename
//create new file
if not DirectoryExists(ls_newfile) then
if CreateDirectory(ls_newfile) <> 1 then
MessageBox(gs
_
sysmess,'
创建图片保存目录
'+ls_newfile+'
失败﹗
')
//gs_sysmess为定义的messagebox对话框的标题
return
end if
end if
//insert the record that create new file
insert into ormaster_file (file_path,file_name,file_number,creator)
values(:ls_filepath,:ls_filename,0,:gsuserid)
using sqlca;
if sqlca.sqlcode=0 then
commit;
else
rollback;
end if
//
ls_picture_path=ls_filepath + "/" + ls_filename + "/" + is_stk_no + ".jpg"
end if
ls_old_picturepath=dw_edit_sub.object.picture_path[1]
ls_oldfile=left(ls_old_picturepath,24)
//
删除原有图片
if ls_oldfile="//
server
/mcphoto/old/" then
ls_oldfilename=ls_oldfile + is_stk_no + ".jpg"
filedelete(ls_oldfilename)
end if
//copy picture to server
li_return=FileCopy(ls_docname,ls_picture_path,true)
//
if li_return=1 then
dw_edit_sub.object.picture_path[1]=ls_picture_path
p_1.picturename=ls_picture_path
//
若是新加图片或更换从数据库中转换出来的图片,则当前存放图片文件夹内图片数量加
1
if ls_old_picturepath='' or isnull(ls_old_picturepath) or ls_oldfile="//
server
/mcphoto/old/" then
update ormaster_file set file_number=file_number + 1
where id=:li_id using sqlca;
if sqlca.sqlcode=0 then
commit;
else
rollback;
end if
end if
messagebox(gs_sysmess,"
保存物品图片成功
")
else
messagebox(gs_sysmess,"
保存物品图片失败
")
return
end if
else
messagebox(gs
_
sysmess,"
选择物品图片失败
")
return
end if