不使用数据库制作一个php文件传输系统要求上传时只能上传一个文件格式不限上传后往dbtxt存储其名称和id并且解决名称相同的问题下载时用户输入id即可从dbtxt抽取文件进行下载每个文件只能下载一次下载时改成原名称相同下载后要求删除文件上传完成之后显示id上传文件限制2000MB页面显示所有未下载的文件设置后台储存不超过3000MB显示剩余内存、已用内存和总内存
以下是一个简单的PHP文件传输系统的实现,满足你的要求:
<!DOCTYPE html>
<html>
<head>
<title>文件传输系统</title>
</head>
<body>
<?php
// 获取剩余内存、已用内存和总内存
$totalSpace = 3000; // 总内存为3000MB
$usedSpace = 0; // 默认已用内存为0MB
$remainingSpace = $totalSpace; // 剩余内存为总内存
if (file_exists('db.txt')) {
// 读取db.txt获取已用内存
$fileContents = file_get_contents('db.txt');
$usedSpace = strlen($fileContents) / 1024 / 1024; // 将字节数转换为MB
$remainingSpace = $totalSpace - $usedSpace;
}
// 显示剩余内存、已用内存和总内存
echo "剩余内存:{$remainingSpace}MB<br>";
echo "已用内存:{$usedSpace}MB<br>";
echo "总内存:{$totalSpace}MB<br>";
// 处理文件上传
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if (isset($_FILES['file'])) {
$file = $_FILES['file'];
$fileName = $file['name'];
$fileSize = $file['size'];
if ($fileSize <= 2000000000) {
// 生成唯一ID
$id = uniqid();
// 处理重名文件
$extension = pathinfo($fileName, PATHINFO_EXTENSION);
$fileName = $id . '.' . $extension;
while (file_exists($fileName)) {
$id = uniqid();
$fileName = $id . '.' . $extension;
}
// 将文件保存到服务器
move_uploaded_file($file['tmp_name'], $fileName);
// 将文件名和ID保存到db.txt
file_put_contents('db.txt', "{$fileName}:{$id}\n", FILE_APPEND);
echo "文件上传成功!文件ID为:{$id}<br>";
} else {
echo "文件大小超出限制!";
}
}
}
// 显示所有未下载的文件
if (file_exists('db.txt')) {
$fileContents = file_get_contents('db.txt');
$files = explode("\n", trim($fileContents));
echo "<h3>未下载的文件:</h3>";
foreach ($files as $file) {
$fileInfo = explode(":", $file);
$fileName = $fileInfo[0];
$fileID = $fileInfo[1];
echo "<a href='download.php?id={$fileID}'>{$fileName}</a><br>";
}
}
?>
<br>
<form method="POST" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="上传">
</form>
</body>
</html>
在同一目录下创建一个名为download.php的文件,内容如下:
<?php
if ($_SERVER['REQUEST_METHOD'] === 'GET') {
if (isset($_GET['id'])) {
$id = $_GET['id'];
// 从db.txt中查找对应的文件名
$fileContents = file_get_contents('db.txt');
$files = explode("\n", trim($fileContents));
foreach ($files as $file) {
$fileInfo = explode(":", $file);
$fileName = $fileInfo[0];
$fileID = $fileInfo[1];
if ($fileID === $id) {
// 下载文件
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=' . $fileName);
readfile($fileName);
// 删除文件
unlink($fileName);
// 从db.txt中移除该文件信息
$fileContents = str_replace("{$fileName}:{$fileID}\n", '', $fileContents);
file_put_contents('db.txt', $fileContents);
exit();
}
}
}
}
请确保服务器环境已启用文件上传功能
原文地址: https://www.cveoy.top/t/topic/ioiz 著作权归作者所有。请勿转载和采集!