我的php脚本应该只是取一个文件名,并在特定目录下输出文件名的内容。问题是它确实这样做但是它显然再一次调用导致抛出错误的情况,我试图用if / else替换switch但仍然回忆起自己(与case相关的代码:“1”)。这是错误:
Warning: fopen(C:/xampp/htdocs/phptut/practice/) [function.fopen]: failed to open stream: No such file or directory in C:\xampp\htdocs\phptut\practice\fileuploadread.php on line 8
Warning: fread() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\phptut\practice\fileuploadread.php on line 9
Warning: fclose() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\phptut\practice\fileuploadread.php on line 10
这是代码:
switch($_GET['id']){
case"1":
{ //here $file gets the pathtothefile + filename
$file="C:/xampp/htdocs/phptut/practice/" . $_POST["element"];
$fh=fopen($file,"r");
$contents=fread($fh,filesize($file));
fclose($fh);
//It does output the $contents at this point
echo $contents;
}
break;
default:{
echo"
<html>
<head>
<style type='text/css'>
fieldset{
background-color:lightblue;
border-color:blue;
width:50%;
margin-left:auto;
margin-right:auto;
margin-top:200px;
}
legend{
color:blue;
}
</style>
</head>
<body>
<fieldset>
<legend> Upload Your CV </legend>
<form method='POST' name='form' action='fileuploadread.php?id=1'>
<input type='input' name='element' size='20' /><br/>
<input type='submit' value='submit...'/>
</form>
</fieldset>
</body>
</html>
";
} }
?>
答案 0 :(得分:2)
我不确定这里有什么真正的问题,但你应该在fread()和fclose()调用中使用它之前检查文件指针是否正常
$fh=fopen($file,"r");
if ($fh) {
$contents=fread($fh,filesize($file));
fclose($fh);
}
如果文件不存在,请先检查并处理。
if (file_exists($file)) {
// do something with file
} else {
// do something else
}
答案 1 :(得分:0)
有两件事突出:
在$file
中您使用正斜杠对路径进行硬编码,但您的Windows系统使用反斜杠 - 您最好查询系统的本机文件路径;
switch
通常用于多个选项 - 您只有一个和默认选项?您可以在函数中尝试使用简单的if
- else
,然后查看是否仍然发生重复。
......正如亚当所说,添加一些错误检查。