系统中图片存储的解决方案——将图片放在服务器上,将其路径存入数据库

 
主题          :系统中图片存储的解决方案——将图片放在服务器上,将其路径存入数据库
方案明细: 1 、用户选择的图片由系统将其拷贝至服务器 "// server /mcphoto" 中,每个文件夹限制存放图片
            1000
          2 、用户选择图片后,系统自动检查当前使用文件夹内图片数量是否超出限制,若否,则继续使
             用,若是,则新建一文件夹
          3 、保存图片时,系统自动检查该物品图片是否是新增图片,若是,则将当前使用文件夹中文件
数加 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
 
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值