以下是“PHP实现文件上传和下载的示例代码”的完整攻略:
文件上传
第一步:编写前端上传表单
首先,在HTML文件或PHP中编写上传表单,以便用户可以选择需要上传的文件并将其发送到服务器。
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="fileToUpload" id="fileToUpload">
<input type="submit" value="上传">
</form>
第二步:编写PHP后端处理文件上传的代码
然后,我们需要创建一个PHP文件来处理文件上传请求,称之为“upload.php”。在这个文件中,首先需要检查上传的文件是否满足要求(例如,文件类型是否正确、文件大小是否在限制范围内等),然后将文件保存在服务器上的指定目录中。
$target_dir = "uploads/"; // 上传文件的保存路径
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]); // 上传文件的完整路径
$uploadOk = 1; // 标志位,初始值设为1,表示文件上传成功
// 检查文件类型
$fileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
if($fileType != "jpg" && $fileType != "png" && $fileType != "jpeg" && $fileType != "gif" ) {
echo "只允许上传JPG、JPEG、PNG和GIF格式的文件";
$uploadOk = 0;
}
// 检查文件大小
if ($_FILES["fileToUpload"]["size"] > 500000) {
echo "文件大小超过了限制";
$uploadOk = 0;
}
// 如果上传不成功,输出错误信息;否则,将文件保存到指定目录中
if ($uploadOk == 0) {
echo "上传失败";
} else {
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
echo "文件" . basename($_FILES["fileToUpload"]["name"]) . "上传成功";
} else {
echo "上传过程出现错误";
}
}
值得注意的是,我们使用move_uploaded_file函数将临时文件移动到我们指定的路径中。临时文件存储在$_FILES数组的“tmp_name”元素中。
示例一:文件上传的完整示例
我们可以将以上代码片段整合起来,展示一个完整的文件上传示例。用户通过前端表单选择文件,并上传到服务器。如果上传成功,服务器会输出相应的成功信息。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>文件上传示例</title>
</head>
<body>
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="fileToUpload" id="fileToUpload">
<input type="submit" value="上传">
</form>
</body>
</html>
<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
// 检查文件类型
$fileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
if($fileType != "jpg" && $fileType != "png" && $fileType != "jpeg" && $fileType != "gif" ) {
echo "只允许上传JPG、JPEG、PNG和GIF格式的文件";
$uploadOk = 0;
}
// 检查文件大小
if ($_FILES["fileToUpload"]["size"] > 500000) {
echo "文件大小超过了限制";
$uploadOk = 0;
}
// 如果上传不成功,输出错误信息;否则,将文件保存到指定目录中
if ($uploadOk == 0) {
echo "上传失败";
} else {
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
echo "文件" . basename($_FILES["fileToUpload"]["name"]) . "上传成功";
} else {
echo "上传过程出现错误";
}
}
?>
文件下载
第一步:编写PHP后端处理下载请求的代码
在文件下载中,我们先编写PHP文件来处理下载请求。我们称之为“download.php”。在这个文件中,首先需要检查用户请求的文件是否存在,如果存在,直接向浏览器输出该文件内容。这里,我们利用PHP的header函数来实现。
$filePath = "path/to/file"; // 文件路径
if(file_exists($filePath)){
header('Content-Description: File Transfer');
header('Content-Disposition: attachment; filename="'.basename($filePath).'"');
header('Content-Type: application/octet-stream');
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($filePath));
ob_clean();
flush();
readfile($filePath);
exit;
}
值得注意的是,我们使用了filesize函数来获取被下载文件的大小并设置Content-Length头信息,确保文件完整下载。同时,我们将输出缓存清理,以确保文件下载的安全性。
示例二:文件下载的完整示例
用户通过前端UI选择需要下载的文件,并发送请求到服务器。如果文件存在,服务器直接向用户返回该文件内容,并将文件下载到本地。以下是一个完整的文件下载示例:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>文件下载示例</title>
</head>
<body>
<a href="download.php?file=path/to/file">下载文件</a>
</body>
</html>
<?php
$filePath = "path/to/file";
if(file_exists($filePath)){
header('Content-Description: File Transfer');
header('Content-Disposition: attachment; filename="'.basename($filePath).'"');
header('Content-Type: application/octet-stream');
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($filePath));
ob_clean();
flush();
readfile($filePath);
exit;
}else{
echo "文件不存在";
}
?>
以上就是PHP实现文件上传和下载的示例代码的完整攻略,希望能对您有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PHP实现文件上传和下载的示例代码 - Python技术站