0

我有这个代码,

<?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 中的文件名

我不明白为什么在定义索引时会出现此错误。

4

2 回答 2

0

你还没有定义任何东西。您正在呈现一个表单,然后尝试访问该表单最终可能会在后续请求中上传的数据。filename在用户点击该表单上的提交按钮之前,该索引不会以任何方式创建或可用。

通常,您会将表单处理逻辑放在顶部,在那里它可以执行并有条件地呈现表单,除非数据被回发。

于 2013-03-28T17:18:53.330 回答
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}

?>

现在,每次您访问“uploadlayout.php”页面并浏览到文件然后按提交按钮“Descragar”时,您将选择的文件发布到“uploadcode.php”页面,文件类型的测试将是执行,如果成功,将执行上传过程,如果失败,您将显示错误“el archivo no es pdf”

我希望我已经清楚地解释了这一点,如果您有其他问题或只是您需要任何澄清,请告诉我:)

于 2013-03-28T18:32:57.503 回答