欢迎访问宙启技术站
智能推送

实现文件上传和下载功能的PHP函数

发布时间:2023-08-05 20:09:40

要实现文件上传和下载功能的PHP函数,我们可以使用PHP内置的文件处理函数来实现。

函数1:文件上传

function uploadFile($file) {
    $targetDir = "/path/to/upload/directory/";
    $targetFile = $targetDir . basename($file['name']);
    $fileType = pathinfo($targetFile, PATHINFO_EXTENSION);
    
    // 检查文件是否已经存在
    if (file_exists($targetFile)) {
        return "文件已经存在。";
    }
    
    // 检查文件大小
    if ($file['size'] > 500000) {
        return "文件过大。";
    }
    
    // 允许上传的文件类型
    $allowedTypes = array('jpg', 'png', 'jpeg', 'gif');
    if (!in_array($fileType, $allowedTypes)) {
        return "只允许上传 jpg, png, jpeg, gif 格式的文件。";
    }
    
    // 将文件移动到目标目录
    if (move_uploaded_file($file['tmp_name'], $targetFile)) {
        return "文件上传成功。";
    } else {
        return "文件上传失败。";
    }
}

使用示例:

if ($_FILES['file']['error'] == UPLOAD_ERR_OK) {
    $result = uploadFile($_FILES['file']);
    echo $result;
} else {
    echo "文件上传错误。";
}

函数2:文件下载

function downloadFile($file) {
    $filePath = "/path/to/file/directory/" . $file;
    
    // 检查文件是否存在
    if (file_exists($filePath)) {
        // 设置HTTP头信息
        header("Content-Type: application/octet-stream");
        header("Content-Disposition: attachment; filename=" . basename($filePath));
        header("Content-Length: " . filesize($filePath));
        
        // 将文件内容输出到浏览器
        readfile($filePath);
    } else {
        echo "文件不存在。";
    }
}

使用示例:

$file = "example.txt";
downloadFile($file);

以上是一个简单的实现文件上传和下载功能的PHP函数,你可以根据自己的需求进行扩展和优化。