我试图在PHP中创建一个上传脚本。我收到以下错误消息:
Notice: Undefined index: file in path\upload\index.php on line 3这是我的表格(非常基本):
<form action="upload" method="post" enctype="multipart/form-data">
<input type="file" name="file" id="fileUpload">
<input type="submit" value="Upload Image" name="submitt">
</form>这是我的(不工作)上传脚本:
<?php
$name = $_FILES['file']['name'];
$temp_name = $_FILES['file']['tmp_name'];
if(isset($name)){
if(!empty($name)){
$location = '../data/';
if(move_uploaded_file($temp_name, $location.$name)){
echo 'File uploaded successfully';
}
}
} else {
echo 'You should select a file to upload !!';
}
?>这是我的php.ini配置:
; Whether to allow HTTP file uploads.
; http://php.net/file-uploads
file_uploads=On
; Maximum allowed size for uploaded files.
; http://php.net/upload-max-filesize
upload_max_filesize=40M
; Maximum number of files that can be uploaded via a single request
max_file_uploads=20
; Maximum size of POST data that PHP will accept.
; Its value may be 0 to disable the limit. It is ignored if POST data reading
; is disabled through enable_post_data_reading.
; http://php.net/post-max-size
post_max_size=50M那我做错了什么。我检查了以前问过的每一个问题,但没有找到答案。
编辑1:
在签出this并修改我的代码之后,问题仍然存在。
<?php
if (isset($_POST['submitt'])) {
if (isset($_FILES['file']) && isset($_FILES['file']['name']) && isset($_FILES['file']['tmp_name'])) {
$name = $_FILES['file']['name'];
$temp_name = $_FILES['file']['tmp_name'];
if(!empty($name)){
$location = '../data/';
if(move_uploaded_file($temp_name, $location.$name)){
echo 'File uploaded successfully';
}
} else {
echo 'You should select a file to upload !!';
}
}
}
?>编辑2:
我发现了这个问题:将action upload替换为upload/index.php解决了问题。我正在本地机器上使用XAMPP来测试我的代码。这是由于XAMPP本身的Apache配置不正确而导致的错误。
发布于 2017-10-23 19:28:07
在您的“上传”逻辑中,您需要确保表单在声明值之前已经提交。否则,它将尝试使用一个尚未存在的值来设置变量;
<?php
//ensures the form was submitted before declaring variable values
if (isset($_POST['submitt']) {
$name = $_FILES['file']['name'];
$temp_name = $_FILES['file']['tmp_name'];
if(isset($name)){
if(!empty($name)){
$location = '../data/';
if(move_uploaded_file($temp_name, $location.$name)){
echo 'File uploaded successfully';
}
}
} else {
echo 'You should select a file to upload !!';
}
}
?>其次,更改表单代码,以便“action”是self (在本例中,我们将action=""保留为空白):
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="file" id="fileUpload">
<input type="submit" value="Upload Image" name="submitt">
</form>发布于 2017-10-23 19:28:33
当用户提交表单而没有选择上载全局变量(数组) $_FILES的文件时,file将没有项,因此出现了此错误,您必须检查此键是否可用,如下所示:
if (isset($_FILES['file']) && isset($_FILES['file']['name']) && isset($_FILES['file']['tmp_name'])) {
// Now you have strict and robust code!
$name = $_FILES['file']['name'];
$temp_name = $_FILES['file']['tmp_name'];
// Rest of your code ...
}https://stackoverflow.com/questions/46897019
复制相似问题