引言在Web开发中,文件的上传和下载是常见的功能需求。PHP作为服务器端脚本语言,提供了丰富的功能来支持文件的上传和下载。本文将深入探讨PHP文件上传下载的核心技巧,帮助开发者安全高效地实现文件交换。...
在Web开发中,文件的上传和下载是常见的功能需求。PHP作为服务器端脚本语言,提供了丰富的功能来支持文件的上传和下载。本文将深入探讨PHP文件上传下载的核心技巧,帮助开发者安全高效地实现文件交换。
首先,我们需要创建一个HTML表单,用于收集用户选择的文件。以下是一个简单的HTML表单示例:
<form action="uploadfile.php" method="post" enctype="multipart/form-data"> <label for="file">文件名:</label> <input type="file" name="file" id="file"> <input type="submit" name="submit" value="提交">
</form>注意:enctype="multipart/form-data"属性是必须的,它允许表单数据作为多个部分发送,包括文件内容。
当用户提交表单后,PHP通过FILES全局变量接收上传的文件。以下是一个PHP脚本示例,用于处理文件上传:
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_FILES['file'])) { $file = $_FILES['file']; $upload_dir = 'upload/'; $upload_path = $upload_dir . basename($file['name']); if (move_uploaded_file($file['tmp_name'], $upload_path)) { echo "文件上传成功!"; } else { echo "文件上传失败。"; }
}
?>注意:使用move_uploaded_file()函数时,确保目标路径存在且可写。
在服务器上,我们需要创建一个链接或按钮,用于触发文件下载。以下是一个简单的HTML链接示例:
<a href="download.php?file=example.txt">下载文件</a>以下是一个PHP脚本示例,用于处理文件下载:
<?php
$file = $_GET['file'];
$download_path = 'upload/' . $file;
if (file_exists($download_path)) { header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="' . basename($download_path) . '"'); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Pragma: public'); header('Content-Length: ' . filesize($download_path)); ob_clean(); flush(); readfile($download_path); exit;
} else { echo "文件不存在。";
}
?>通过本文的介绍,相信你已经掌握了PHP文件上传下载的核心技巧。在实际开发中,请务必注意安全性,确保文件交换的安全和高效。