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进程有足够的权限读写该目录。

希望对你有所帮助!