文件上传 php $_FILES 未定义索引错误
Posted
技术标签:
【中文标题】文件上传 php $_FILES 未定义索引错误【英文标题】:file upload php $_FILES undefined index error 【发布时间】:2014-02-11 19:26:54 【问题描述】:<?php
$name = $_FILES["file"]["name"];
//$size = $_FILES['file']['size']
//$type = $_FILES['file']['type']
$tmp_name = $_FILES['file']['tmp_name'];
$error = $_FILES['file']['error'];
if (isset ($name))
if (!empty($name))
$location = 'uploads/';
if (move_uploaded_file($tmp_name, $location.$name))
echo 'Uploaded';
else
echo 'please choose a file';
?>
<form action="upload.php" method="POST" enctype="multipart/form-data">
<input type="file" name="file"><br><br>
<input type="submit" value="Submit">
</form>
我收到“通知:未定义索引”错误消息。 enctype 包含在表单标签中,所以我不知道它是什么.. 谁能帮帮我??
【问题讨论】:
您的整个代码是在一个文件中,还是分成两个单独的文件? @Fred -ii- 单人,200% 我同意。我正要发布对这种影响的答案,但它已经在下面得到了处理。 @voodoo417 其实我改变了主意。我在下面发布了一份工作副本。 @voodoo417 【参考方案1】:如果没有上传任何内容并且 isset 测试有点没用,第一个作业会引发警告..
您可以按如下方式更改您的代码
<?php
if (isset($_FILES["file"]["name"]))
$name = $_FILES["file"]["name"];
$tmp_name = $_FILES['file']['tmp_name'];
$error = $_FILES['file']['error'];
if (!empty($name))
$location = 'uploads/';
if (move_uploaded_file($tmp_name, $location.$name))
echo 'Uploaded';
else
echo 'please choose a file';
?>
<form action="test.php" method="POST" enctype="multipart/form-data">
<input type="file" name="file"><br><br>
<input type="submit" value="Submit">
</form>
【讨论】:
谢谢!未定义的索引错误消失了,但现在我得到了这个错误: 警告:move_uploaded_file(uploads/testhoes.jpg):无法打开流:第 14 行的 /var/www/upload.php 中没有此类文件或目录。警告:move_uploaded_file():无法在第 14 行的 /var/www/upload.php 中将“/tmp/phpnvksz8”移动到“uploads/testhoes.jpg” 对不起,上面的错误是 2 个错误,但我不知道如何在它们之间放置空格 上传目录必须存在且有写权限(即755)【参考方案2】:上传文件时解决 php 中未定义的索引
由于最大文件大小限制php.ini
的变化
`max_execution_time` = 300
`max_input_time` = 240
`post_max_size` = 128M
`upload_max_filesize` = 128M
根据你的要求改变
【讨论】:
谢谢@Randeep Singh xampp内部位置:xampp/php/php.ini【参考方案3】:<form action="test.php" method="POST" enctype="multipart/form-data"> /* mistake here: change test.php to your source: upload.php */
<input type="file" name="file"><br><br>
<input type="submit" value="Submit">
</form>
【讨论】:
【参考方案4】:如果您将整个代码用作一个文件(我怀疑您是这样),那么您需要使用条件语句执行以下操作,我在发布之前对其进行了测试(和工作) .
另外,请确保您的 uploads
文件夹设置了正确的写入权限并且它存在。
<?php
if(isset($_POST['submit']))
$name = $_FILES["file"]["name"];
//$size = $_FILES['file']['size']
//$type = $_FILES['file']['type']
$tmp_name = $_FILES['file']['tmp_name'];
$error = $_FILES['file']['error'];
if (isset ($name))
if (!empty($name))
$location = 'uploads/';
if (move_uploaded_file($tmp_name, $location.$name))
echo 'Uploaded';
else
echo 'please choose a file';
?>
<form action="" method="POST" enctype="multipart/form-data">
<input type="file" name="file"><br><br>
<input type="submit" name="submit" value="Submit">
</form>
脚注:
我添加了一个条件语句:
if(isset($_POST['submit']))
我将提交按钮命名为:(与isset()
条件语句一起使用)
<input type="submit" name="submit" value="Submit">
注意:如果您实际上将发布的代码用作两个单独的文件,那么您可以简单地复制此答案中的 PHP,并以单独的 html 表单命名您当前的提交按钮集正如我上面所示的name="submit"
(例如调用您的表单upload_form.htm
),但保留action="upload.php"
并相应地命名PHP 上传处理程序文件。
【讨论】:
就像菲利普的答案一样,未定义的索引错误消失了。谢谢! 但现在我收到此错误:警告:move_uploaded_file(uploads/testhoes.jpg): failed to open stream: No such file or directory in /var/www/upload.php on line 14. 警告: move_uploaded_file(): 无法在第 14 行的 /var/www/upload.php 中将“/tmp/phpnvksz8”移动到“uploads/testhoes.jpg” 文件夹是否存在,是否可写? @user3221348 意思是,它是否具有适当的写权限? 你还没有回答我的问题。 @user3221348 tmp/文件夹还是upload/文件夹?【参考方案5】:// Count total files
$countfiles = count($_FILES['event_Img']['name']);
for($i=0;$i<$countfiles;$i++)
$filename = $_FILES['event_Img']['name'][$i];
// Get extension
$ext = end((explode(".", $filename)));
move_uploaded_file($_FILES['event_Img']['tmp_name'][$i], "uploads/".$filename);
$sqlBrand = 'INSERT INTO ot_event_images
SET
event_id=:event_id,
imagepath=:imagepath,
imagemimetype=:imagemimetype';
$query2 = $conn->prepare($sqlBrand);
$query2->bindParam(':event_id', $eventid);
$query2->bindParam(':imagepath', $filename);
$query2->bindParam(':imagemimetype', $ext);
$status2 = $query2->execute();
if($status2)
echo "File upload successfully";
else
echo "error";
【讨论】:
【参考方案6】:1. You hadn't mention name value in your submit button.
2. Use isset function.
<html>
<body>
<form action="" method="POST" enctype="multipart/form-data">
<input type="file" name="file"><br><br>
<input type="submit" value="Submit" name="submit">
</form>
</body>
</html>
<?php
if(isset($_POST['submit']))
$name = $_FILES["file"]["name"];
echo $name;
//$size = $_FILES['file']['size']
//$type = $_FILES['file']['type']
$tmp_name = $_FILES['file']['tmp_name'];
$error = $_FILES['file']['error'];
if (isset ($name))
if (!empty($name))
$location = 'uploads/';
if (move_uploaded_file($tmp_name, $location.$name))
echo 'Uploaded';
else
echo 'please choose a file';
?>
【讨论】:
以上是关于文件上传 php $_FILES 未定义索引错误的主要内容,如果未能解决你的问题,请参考以下文章
未定义 FormData 时如何在 Web Workers 中上传文件