请实现1、使用Form表单上传文件,并在服务器上保存这个文件。 2、使用PHP在后台判断是否有已经上传的文件。如果有上传的文件,需要对上传的文件进行解析(HTML显示和按照列进行排序);如果有新的文件上传,用新的文件覆盖以前的文件,并对新的文件进行显示和排序。 2、排序的参数通过URL,或者GET的方式传递给服务器。因为一个CVS文件可能有多个列(不定列),所以排序的超链接需要动态生成。 3、表格的展示使用HTML的table标签,只用显示一个表格即可(CVS只存储一个表格)。
时间: 2023-06-27 18:07:37 浏览: 117
以下是一个简单的实现:
HTML 文件上传表单:
```
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="fileToUpload" id="fileToUpload">
<input type="submit" value="上传文件" name="submit">
</form>
```
upload.php 文件:
```
<?php
// 判断是否有文件上传
if(isset($_POST["submit"])) {
$target_dir = "./uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$fileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
// 检查文件是否为 CSV 格式
if($fileType != "csv") {
echo "只支持 CSV 格式的文件。";
$uploadOk = 0;
}
// 检查文件是否已经存在,如果存在则删除旧文件
if (file_exists($target_file)) {
unlink($target_file);
}
// 上传文件
if ($uploadOk) {
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
echo "文件上传成功。";
} else {
echo "上传文件失败。";
}
}
}
// 判断是否有已经上传的文件
if (file_exists($target_file)) {
// 读取 CSV 文件内容
$file = fopen($target_file, "r");
$data = array();
while (($line = fgetcsv($file)) !== FALSE) {
array_push($data, $line);
}
fclose($file);
// 获取排序参数
$sort = isset($_GET["sort"]) ? $_GET["sort"] : 0;
// 根据排序参数,对数据进行排序
if ($sort > 0 && $sort < count($data[0])) {
$sortKey = $sort - 1;
array_multisort(array_column($data, $sortKey), SORT_ASC, $data);
}
// 生成排序链接
$sortLinks = "";
for ($i = 1; $i <= count($data[0]); $i++) {
$sortLinks .= "<a href='?sort={$i}'>列{$i}</a> ";
}
// 显示表格
echo "<table>";
foreach ($data as $row) {
echo "<tr>";
foreach ($row as $cell) {
echo "<td>{$cell}</td>";
}
echo "</tr>";
}
echo "</table>";
// 显示排序链接
echo "<p>按列排序:{$sortLinks}</p>";
}
?>
```
注意,这个实现只是一个简单的示例,没有考虑安全性和性能等问题。在实际应用中,需要更加谨慎地处理文件上传和数据解析等操作。
阅读全文