Discuz上传附件
Discuz是一款广泛使用的论坛程序,它提供了丰富的功能和插件,使得论坛的管理和使用变得更加便捷。其中,上传附件是论坛功能之一,本文将介绍如何在Discuz中实现上传附件功能。
上传附件的实现步骤
上传附件功能的实现分为以下几个步骤:
- 在Discuz后台中开启上传附件功能。
- 在前端页面中添加上传附件的表单。
- 编写上传附件的处理程序。
开启上传附件功能
在Discuz后台管理页面中,找到“全局”-“上传设置”-“上传附件”,勾选“开启上传附件功能”即可开启上传附件功能。
添加上传附件的表单
在需要上传附件的页面中,添加如下的表单:
<form action="upload.php" method="post" enctype="multipart/form-data"> <input type="file" name="file" /> <input type="submit" value="上传" /> </form>
其中,action属性指定上传附件的处理程序,method属性指定请求方法为POST,enctype属性指定表单数据编码类型为multipart/form-data,这是必须的。

编写上传附件的处理程序
上传附件的处理程序可以使用Discuz提供的附件上传类,也可以自己编写。以下是一个简单的上传附件处理程序:
<?php $upload = new discuz_upload(); $upload->init($_FILES['file'], 'common'); $attach = $upload->attach; if (!$attach['isimage']) { $upload->error(); } $upload->save(); $upload->attach['description'] = $_FILES['file']['name']; $upload->attach['readperm'] = 0; $upload->attach['price'] = 0; $upload->attach['isimage'] = 1; $upload->attach['width'] = $upload->imageinfo['width']; $upload->attach['height'] = $upload->imageinfo['height']; $upload->attach['filesize'] = $upload->attach['size']; $upload->attach['attachment'] = $upload->attach['attachment']; $upload->attach['remote'] = 0; $upload->attach['aid'] = 0; $upload->attach['tid'] = 0; $upload->attach['pid'] = 0; $upload->attach['uid'] = $_G['uid']; $upload->attach['dateline'] = $_G['timestamp']; $upload->attach['filename'] = addslashes(diconv($upload->attach['filename'], CHARSET, 'UTF-8')); $upload->attach['filetype'] = addslashes(diconv($upload->attach['filetype'], CHARSET, 'UTF-8')); $upload->attach['filesize'] = addslashes(diconv($upload->attach['filesize'], CHARSET, 'UTF-8')); $upload->attach['attachment'] = addslashes(diconv($upload->attach['attachment'], CHARSET, 'UTF-8')); C::t('forum_attachment')->insert($upload->attach); echo '上传成功'; ?>
其中,$upload = new discuz_upload()创建了一个附件上传类的实例,$upload->init()方法初始化上传附件的相关参数,$upload->save()方法保存上传的附件,$upload->attach包含了上传附件的相关信息,C::t('forum_attachment')->insert()将附件信息插入到数据库中。
总结
通过以上步骤,我们就可以在Discuz中实现上传附件功能了。需要注意的是,上传附件的大小和类型需要在Discuz后台管理页面中进行设置。