上传索引错误

时间:2013-03-28 17:14:03

标签: php upload

我有这段代码,

<?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中的未定义索引:文件名

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

3 个答案:

答案 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"];
}
?>