我是非常新的PHP,但之前使用过javascript和html。我正在我自己的计算机上托管一个带有apache的服务器,仅用于测试php。我在上面安装了php作为cgi,一切正常。我做了一些测试,只是为了了解它是如何工作的,但当我尝试制作文件上传表格并用php读取文件时:
//uploadFile.php
<html>
<head>
</head>
<body>
<form action="uploadFile.php" id="form" method="POST" enctype="multipart/form-data">
<input type="file" name="uploadFile">
<input name="submit" value="upload" type="submit">
</form>
<?php
echo $_FILES["uploadFile"]["name"];
?>
</body>
</html>
我突然收到了消息:
未指定输入文件
只有那个!它甚至没有说这是一个错误。我尝试过这个非常简单的PHP脚本,之前有效:
<?php
echo "Working";
?>
但我还是“没有指定输入文件”。我尝试的每个php文件都给了我这个错误,它表明问题不在我的代码中。当我尝试一个普通的.html文件没有PHP它工作。我已经尝试过研究它,像godaddy上的peaple主机这样的接缝得到了这个消息,但我找不到解决方案。
有人知道解决方案或有任何关于如何解决此问题的提示。
答案 0 :(得分:1)
根据您在提交此答案后更改问题的originally posted code/question:
对于POST / FILES变量或任何变量,PHP都区分大小写。
您有name="uploadfile"
然后$_FILES["uploadFile"]
将其更改为$_FILES["uploadfile"]
F
与f
不同。
或保留$_FILES["uploadFile"]
并将name="uploadfile"
更改为name="uploadFile"
。
无论哪种方式,它们都在字母大小匹配。
阅读有关上传文件的手册:
编辑:(示例)
旁注:
确保该文件夹存在并具有正确的写入权限。您可能需要调整$uploads_dir = 'uploads';
的方式,具体取决于您执行代码的位置。
<html>
<head>
</head>
<body>
<form action="" id="form" method="POST" enctype="multipart/form-data">
<input type="file" name="uploadFile">
<input name="submit" value="upload" type="submit">
</form>
<?php
if(isset($_POST['submit'])){
$uploads_dir = 'uploads';
foreach ($_FILES["uploadFile"]["error"] as $key => $error) {
if ($error == UPLOAD_ERR_OK) {
$tmp_name = $_FILES["uploadFile"]["tmp_name"][$key];
$name = $_FILES["uploadFile"]["name"][$key];
move_uploaded_file($tmp_name, "$uploads_dir/$name");
}
}
}
?>
</body>
</html>
“当我尝试使用没有php的普通
.html
文件时,它可以正常工作。”
确保我的回答中的代码用作.php
文件,而不是.html
。
您还应该联系GoDaddy关于此事的技术支持,并了解PHP是否确实可供您使用。
将error reporting添加到文件的顶部,这有助于查找错误。
error_reporting(E_ALL);
ini_set('display_errors', 1);
旁注:错误报告应仅在暂存时完成,而不是生产。