我有这段代码,
<?php
include('menu/menu.html');
if (isset ($_POST['submit'])){
?>
<div id="search">
<form action="upload.php" method="post" enctype="multipart/form-data">
<table><tr><td><input type="file" name="filename"/></td>
<td align="right"><input type="submit" name="submit" value="Descargar"></td></tr> </table>
</form>
</div>
<div id="result">
<div id="nresult">
<?php
if ($_FILES['filename']['type'] != "application/pdf")
{
echo "Error " . $_FILES['filename'] . ": el archivo no es pdf.<br>";
}
else
{
我有这个错误,
注意:第27行的D:\ xampp \ htdocs \ PHPEx \ capsordenadores \ Main.menu \ upload.php中的未定义索引:文件名
注意:第29行的D:\ xampp \ htdocs \ PHPEx \ capsordenadores \ Main.menu \ upload.php中的未定义索引:文件名
我不明白为什么我在定义索引时会出现此错误。
答案 0 :(得分:0)
您尚未定义任何内容。您正在呈现表单,然后尝试访问可能最终在后续请求上上传的表单。在用户点击该表单上的提交按钮之前,不会以任何方式创建或提供filename
索引。
通常,您会将表单处理逻辑放在顶部,它可以执行并有条件地呈现表单,除非数据被回发。
答案 1 :(得分:0)
您发布的代码的逻辑不正确。
最初,当您想要上传文件时,有两个逻辑:
1-使用相同的php文件显示表单并处理上传:
将包含文件字段的表单布局放在块中,将上载过程放在另一个块中。
我的意思是你必须将你的代码分成两部分:
如果首次访问该页面,将执行第一部分,在这种情况下,页面必须显示将询问用户有关您要上传的文件的表单
第二部分如果由于回复而访问该页面将被执行(用户在指向该页面的表单中按下提交按钮后访问该页面)
并且文件[upload.php]的代码必须如下所示:
<?php
include('menu/menu.html');
if (!isset($_POST['submit']))
{
?>
<div id="search">
<form action="upload.php" method="post" enctype="multipart/form-data">
<table>
<tr>
<td><input type="file" name="filename"/></td>
<td align="right"><input type="submit" name="submit" value="Descargar"></td>
</tr>
</table>
</form>
</div>
<?php
}
else
{
?>
<div id="result">
<div id="nresult">
<?php
if ($_FILES['filename']['type'] != "application/pdf")
{echo "Error " . $_FILES['filename'] . ": el archivo no es pdf.<br>";}
else
{\\Procces your upload}
}
2-第二个逻辑是将表单布局放在一个文件中,将上载过程放在另一个文件中,并将第一页中的表单指向第二页,如下所示:
输入名为[uploadlayout.php]
的文件<div id="search">
<form name="form1" method="post" action="uploadcode.php" enctype="multipart/form-data">
<table>
<tr>
<td><input type="file" name="filename"/></td>
<td align="right"><input type="submit" name="submit" value="Descargar"></td>
</tr>
</table>
</form>
</div>
在名为[uploadecode.php]
的文件中<?php
if ($_FILES['filename']['type'] != "application/pdf")
{echo "Error " . $_FILES['filename'] . ": el archivo no es pdf.";}
else
{//Proccess your upload}
&GT;
现在每次访问“uploadlayout.php”页面并浏览到一个文件,然后按“提交”按钮“Descragar”,您将发布选择的文件,到“uploadcode.php”页面并测试文件将执行类型,如果成功,将执行上载过程,如果失败,您将显示错误“el archivo no es pdf”
我希望我已经清楚地解释了这一点,如果您有其他问题,或者只是需要澄清,请告诉我:)
答案 2 :(得分:-1)
获取文件名的正确方法是:
$_FILES["file"]["name"]
以下是您可以使用的示例:
<?php
if ($_FILES["file"]["error"] > 0)
{
echo "Error: " . $_FILES["file"]["error"] . "<br>";
}else{ {
echo "Upload: " . $_FILES["file"]["name"] . "<br>";
echo "Type: " . $_FILES["file"]["type"] . "<br>";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
echo "Stored in: " . $_FILES["file"]["tmp_name"];
}
?>