找回密码
 开放注册

QQ登录

只需一步,快速开始

微信登录

微信扫码,快速开始

通达OA官网网站
搜索
查看: 3883|回复: 3

二次开发之附件管理(上传附件、附件权限控制、删除附件)

[复制链接]

11

主题

211

回帖

1146

牛毛

游客

积分
1362
发表于 2013-11-23 18:16:47 | 显示全部楼层 |阅读模式
如果你是第一次接触通达OA二次开发请务必熟读通达OA二次开发手册前三章并亲手按照第三章如何创建一个模块操作一遍。

上传附件

涉及的内置函数:Message、upload、attach_link
涉及的公用组件ShowAddFile()
文件处理相关函数都在utility_file.php中,使用前先引入。
一、工具方法
复制文件 :参考PHP原生方法copy
td_copy($source, $dest)
重命名文件 :参考PHP原生方法rename
td_rename($oldname, $newname)
重命名附件
rename_attach($ATTACHMENT_ID,$ATTACHMENT_NAME_OLD,$ATTACHMENT_NAME_NEW,$MODULE="")
移动已上传的文件 :参考PHP原生方法move_uploaded_file
td_move_uploaded_file($filename, $destination)
将数据存入文件中 :参考PHP原生方法 file_put_contents\file_get_contents
td_file_put_contents($filename, $data, $flag = FALSE)
打开文件 :参考PHP原生方法fopen
td_fopen($filename, $mode, $use_include_path = FALSE, $zcontext = FALSE)
获取图片大小:替代PHP内置的getimagesize函数,支持加密过的文件参数
td_getimagesize($file)
附件加密解密
decrypt_attach($FILE_SRC, $FILE_DEST)
生产一个临时文件路径和名称,用于文件解密、压缩等
get_tmp_filename($prefix, $basename="")
读取doc文件的文本并返回字符串
doc2txt($path)
二、文件类型检测
Is_SysFile($FILE_NAME) 是否是系统文件(网络硬盘默认不显示系统文件以防止误删文件造成系统出错)
file_type($file_name) 返回文件类型
mime_type($file_name) 返回文件mime类型
is_media($FILE_NAME) 是否是多媒体文件
is_viewable($FILE_NAME) 是否是可以在线查看的图片
is_thumbable($FILE_NAME) 是否可以后台生成缩略图的图片
is_image($FILE_NAME) 是否是图片
is_ppt_xls($FILE_NAME) 是否是pptxls中的一种
is_aip($FILE_NAME) 是否是aip文件
is_office($FILE_NAME) 是否是office文件(docpptxls
is_editable($FILE_NAME) 是否可以在线编辑
is_text($FILE_NAME) 是否是纯文本文件
is_uploadable($FILE_NAME) 是否是系统允许上传的文件
三、上传附件
(1)前台form表单
<script src="<?=MYOA_JS_SERVER?>/static/js/module.js"></script>
<script src="<?=MYOA_JS_SERVER?>/static/js/mouse_mon.js"></script>
<script type="text/javascript" src="/inc/js_lang.php"></script>
<script type="text/javascript" src="<?=MYOA_JS_SERVER?>/static/js/utility.js"></script>
<script type="text/javascript" src="<?=MYOA_JS_SERVER?>/static/js/attach.js"></script>
<script Language="JavaScript">
var upload_limit=<?=MYOA_UPLOAD_LIMIT?>,limit_type="<?=strtolower(MYOA_UPLOAD_LIMIT_TYPE)?>";
</script>
<script>ShowAddFile();</script>
<script>$("ATTACHMENT_upload_div").innerHTML='<a href="javascript:upload_attach();"><?=_("上传附件")?></a>'</script>
(2)后台PHP处理
upload($PREFIX="ATTACHMENT", $MODULE="", $OUTPUT=true)
    $a_attachments = upload();//上传的附件
    $s_attachment_id = $a_attachments["ID"];
$s_attachment_name = $a_attachments["NAME"];
$s_attachment_id .= copy_sel_attach($ATTACH_NAME, $ATTACH_DIR, $DISK_ID);//从网盘复制
$s_attachment_name .= $ATTACH_NAME;
四、获取附件
附件默认存储路径根目录为D:/MYOA/attach
系统基于attachment_idattachment_name识别文件
其中attachment_id分为三部分,aid(附件唯一数字标示)、YM(附件按年月分目录存放附件)、attach_id(附件加密串)
生成附件下载链接
attach_url($ATTACHMENT_ID, $ATTACHMENT_NAME, $MODULE="", $OTHER=array())
生成带有权限控制的附件菜单
attach_link($ATTACHMENT_ID,$ATTACHMENT_NAME,$SHOW_SIZE=0,$DOWN_PRIV=1,$DOWN_PRIV_OFFICE=1,$EDIT_PRIV=0,$DELETE_PRIV=0,$NEW_LINE=1,$SAVE_FILE=1,$CREATE_IMAGE=0,$MODULE="",$IS_UTF8=false,$FORMAT=0)
获取附件大小
attach_size($ATTACHMENT_ID,$ATTACHMENT_NAME,$MODULE="")
五、处理附件
删除附件
delete_attach($ATTACHMENT_ID,$ATTACHMENT_NAME,$MODULE="")

30

主题

85

回帖

633

牛毛

游客

积分
748
发表于 2013-11-24 20:14:34 | 显示全部楼层
太给力了,一直等的就是这个,不知2013版二开是否也是这样的呢?

点评

基本可以参考  详情 回复 发表于 2013-11-28 22:53

61

主题

397

回帖

1492

牛毛

游客

积分
1871
发表于 2013-11-25 10:32:18 | 显示全部楼层
谢谢,已经收藏

257

主题

1154

回帖

1万

牛毛

游客

积分
18851
QQ
发表于 2013-11-28 14:56:12 | 显示全部楼层
谢谢,已收藏
您需要登录后才可以回帖 登录 | 开放注册

本版积分规则

咨询电话:400 818 0505 通达OA,国内协同管理软件行业内唯一的央企单位,中国协同OA软件的领跑者,优秀协同办公解决方案供应商

帮助|Archiver|小黑屋|通信管理局专项备案号:[2008]238号|由NB5牛论坛提供技术支持NB5用户社区 ( 皖ICP备08004151号;皖公网安备34010402700514号 )

GMT+8, 2024-12-21 20:23 , Processed in 0.125812 second(s), 40 queries , Yac On.

Powered by Discuz

Copyright © 2001-2024, 北京通达信科科技有限公司.

快速回复 返回顶部 返回列表