discuz 附件上传 代码
时间 : 2023-12-11 20:32:02 声明: : 文章内容来自网络,不保证准确性,请自行甄别信息有效性
最佳答案
以下是一个基于PHP的Discuz附件上传代码示例:
```php
<?php
// 检查用户是否登录
if(empty($_SESSION['uid'])) {
exit('请先登录');
}
// 设置附件保存目录
$attachDir = './attach/';
// 检查目录是否存在,如果不存在则创建
if(!file_exists($attachDir)) {
mkdir($attachDir, 0777, true);
}
// 判断是否有文件上传
if(isset($_FILES['file']) && $_FILES['file']['error'] === 0) {
$file = $_FILES['file'];
// 检查文件类型
$allowedTypes = array('image/jpeg', 'image/png', 'image/gif');
if(!in_array($file['type'], $allowedTypes)) {
exit('不支持的文件类型');
}
// 生成唯一的文件名
$fileName = uniqid() . '_' . $file['name'];
// 组合文件路径
$filePath = $attachDir . $fileName;
// 将文件从临时目录移动到附件目录
if(move_uploaded_file($file['tmp_name'], $filePath)) {
// 保存文件信息到数据库中
$db->query("INSERT INTO attachments (file_name, file_path) VALUES ('$fileName', '$filePath')");
exit('文件上传成功');
} else {
exit('文件上传失败');
}
}
?>
<!DOCTYPE html>
<html>
<head>
<title>附件上传</title>
</head>
<body>
<form action="" method="POST" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="上传">
</form>
</body>
</html>
以上代码实现了基本的Discuz附件上传功能。它通过判断用户是否登录、检查文件类型、生成唯一的文件名、将文件从临时目录移动到附件目录,并将文件信息保存到数据库中。在前端页面上,通过一个文件上传表单来触发附件上传操作。
你可以将以上代码保存为一个PHP文件,并将其部署到支持PHP的服务器上,然后通过访问该页面来使用附件上传功能。在实际使用时,你可能需要根据具体的情况进行修改和调整。
其他答案
下面是一个简单的示例代码,用于在Discuz论坛中实现附件上传功能:
首先,在论坛的前台页面中添加一个表单,用于上传附件:
然后,创建一个名为upload.php的文件,用于处理上传的附件:
```php
<?php
// 允许的附件类型
$allowedTypes = array('jpg', 'jpeg', 'png', 'gif');
// 上传文件保存目录
$uploadDir = './attachments/';
// 如果目录不存在,则创建目录
if (!file_exists($uploadDir)) {
mkdir($uploadDir, 0777, true);
}
// 获取附件信息
$fileName = $_FILES['file']['name'];
$fileType = $_FILES['file']['type'];
$fileSize = $_FILES['file']['size'];
$fileTmp = $_FILES['file']['tmp_name'];
// 获取文件扩展名
$fileExt = strtolower(pathinfo($fileName, PATHINFO_EXTENSION));
// 检查文件类型
if (!in_array($fileExt, $allowedTypes)) {
die('只允许上传 ' . implode(', ', $allowedTypes) . ' 文件');
}
// 生成唯一文件名
$newFileName = uniqid() . '.' . $fileExt;
// 移动上传文件到指定目录
if (move_uploaded_file($fileTmp, $uploadDir . $newFileName)) {
echo '附件上传成功,文件名为:' . $newFileName;
} else {
echo '附件上传失败';
}
?>
请注意,上述代码只是一个简单的示例,实际应用中可能需要根据具体情况进行适当的修改和完善,例如增加文件大小限制、添加文件名重复处理等。
此外,还需要注意设置附件上传目录的访问权限,确保PHP进程有足够的权限读写该目录。
希望对你有所帮助!
上一篇
discuz如何删除站点广告
下一篇
帝国cms7.5 会员中心模板
https/SSL证书广告优选IDC>>
推荐主题模板更多>>
推荐文章







