让我们来讲解一下“PHP文件操作实例总结【文件上传、下载、分页】”的攻略。
文件上传
HTML代码
在HTML中,我们可以通过<input>
标签实现文件上传。
<form enctype="multipart/form-data" action="upload.php" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="1000000" />
选择文件: <input type="file" name="myfile" />
<input type="submit" value="上传文件" />
</form>
其中,enctype="multipart/form-data"
表示传输的数据为二进制类型,action="upload.php"
表示提交的表单数据交给upload.php
文件处理。
PHP代码
在PHP中,我们可以通过$_FILES
全局变量获取上传的文件信息。
$filename = $_FILES['myfile']['name']; // 上传文件名
$filetype = $_FILES['myfile']['type']; // 上传文件类型
$filetmp = $_FILES['myfile']['tmp_name']; // 上传文件临时存放位置
$fileerror = $_FILES['myfile']['error']; // 上传文件的错误码
$filesize = $_FILES['myfile']['size']; // 上传文件大小
其中,$_FILES['myfile']['name']
表示上传文件的原始文件名,$_FILES['myfile']['type']
表示上传文件的类型,$_FILES['myfile']['tmp_name']
表示上传文件的临时存放位置,$_FILES['myfile']['error']
表示上传文件的错误码,$_FILES['myfile']['size']
表示上传文件的大小。
我们可以通过以下代码实现文件上传功能。
if ($_FILES['myfile']['error'] > 0) {
echo '上传文件出错,错误码:' . $_FILES['myfile']['error'];
} else {
$path = './uploads/' . $_FILES['myfile']['name'];
if (move_uploaded_file($_FILES['myfile']['tmp_name'], $path)) {
echo '文件上传成功';
} else {
echo '文件上传失败';
}
}
其中,move_uploaded_file()
函数将上传文件从临时位置移动到指定位置,如果移动成功则返回true
,失败则返回false
。
文件下载
文件下载相对来说比较简单,我们可以通过PHP中的readfile()
函数实现。
$filename = './downloads/file.csv'; // 要下载的文件名
header('Content-Type: application/octet-stream'); // 声明文件格式为二进制流
header('Content-Disposition: attachment; filename=' . basename($filename)); // 声明为下载文件,并指定文件名
header('Content-Length: ' . filesize($filename)); // 声明文件大小
readfile($filename); // 输出文件内容
其中,Content-Type: application/octet-stream
表示要下载的文件为二进制流格式,Content-Disposition: attachment; filename=
表示指定文件名并声明为下载文件,Content-Length:
表示文件大小,readfile()
函数则将文件输出到浏览器端。
分页
分页可以说是Web开发中必备的功能之一,我们可以通过PHP来实现。
$pageNum = isset($_GET['page']) ? intval($_GET['page']) : 1; // 当前页码
$pageSize = isset($_GET['size']) ? intval($_GET['size']) : 10; // 每页显示记录数
$total = 100; // 总记录数
$totalPage = ceil($total / $pageSize); // 总页数
$start = ($pageNum - 1) * $pageSize; // 查询起始位置
$sql = "SELECT * FROM mytable LIMIT $start, $pageSize"; // 查询语句
其中,$pageNum
表示当前页码,$pageSize
表示每页显示的记录数,$total
表示总记录数,$totalPage
表示总页数,$start
则表示查询的起始位置,$sql
为查询语句。
我们可以通过以下代码显示分页导航栏。
$pageNav = '';
if ($pageNum > 1) {
$pageNav .= '<a href="?page=1&size=' . $pageSize . '">首页</a> ';
$pageNav .= '<a href="?page=' . ($pageNum - 1) . '&size=' . $pageSize . '">上一页</a> ';
}
if ($pageNum < $totalPage) {
$pageNav .= '<a href="?page=' . ($pageNum + 1) . '&size=' . $pageSize . '">下一页</a> ';
$pageNav .= '<a href="?page=' . $totalPage . '&size=' . $pageSize . '">末页</a> ';
}
$pageNav .= '当前第' . $pageNum . '页/共' . $totalPage . '页';
echo $pageNav;
其中,$pageNav
为分页导航栏,<a href>
表示导航栏的超链接,?page=
表示设置页码,&size=
表示设置每页显示的记录数。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PHP文件操作实例总结【文件上传、下载、分页】 - Python技术站