我的目标是在表单上上传一个.txt文件(浏览),将文件发布到另一个php页面,然后逐行读取该文件.
到目前为止我的代码就在这里.文件1:HTML上传:
<form action="TestParse.php" method="post" enctype="multipart/form-data">
<label for="file">Filename:</label> <input type="file" name="file" id="file"/>
<input type="submit" value="Submit">
</form>
Run Code Online (Sandbox Code Playgroud)
文件2:阅读文件
if ($_FILES["file"]["error"] > 0)
{
echo "Error: " . $_FILES["file"]["error"] . "<br />";
}
elseif ($_FILES["file"]["type"] !== "text/plain")
{
echo "File must be a .txt";
}
else
{
$file_handle = fopen($_FILES["file"]["name"], "rb");
}
Run Code Online (Sandbox Code Playgroud)
在我看来,第二个文件将验证没有错误,并且上传的文件是.txt.然后它将fopen()文件然后我将能够用fgets()读取(我已经设法让所有这些工作).
但是,此代码仅在上载的.txt文件恰好与PHP文件位于同一目录中时才有效.否则我会收到很多错误消息.当你无法上传不在PHP文件夹中的文件时,它首先会破坏文件上传系统的目的.
有人能告诉我这段代码有什么问题吗?
小智 16
逐行阅读,它为我的代码工作:
$fp = fopen($_FILES['uploadFile']['tmp_name'], 'rb');
while ( ($line = fgets($fp)) !== false) {
echo "$line<br>";
}
Run Code Online (Sandbox Code Playgroud)
你不需要保存它.
您需要先将文件移动到您想要的位置,然后才能使用它。看看move_uploaded_file()这是如何完成的。另请参阅PHP 文档中的处理文件上传,特别是显示如何使用您正在执行的 POST 的页面。
<?php
// In PHP versions earlier than 4.1.0, $HTTP_POST_FILES should be used instead
// of $_FILES.
$uploaddir = '/var/www/uploads/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
echo '<pre>';
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
echo "File is valid, and was successfully uploaded.\n";
} else {
echo "Possible file upload attack!\n";
}
echo 'Here is some more debugging info:';
print_r($_FILES);
print "</pre>";
?>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
41331 次 |
| 最近记录: |