【问题标题】:move_uploaded_file is giving a errormove_uploaded_file 给出错误
【发布时间】:2012-05-07 05:32:49
【问题描述】:

这是我的表格

<form action="test.php" method="post" name="myform"> 
<table width="500" border="0">
  <tr>
    <td width="369" colspan="3">Admin's Area </td>
    <td width="121"><?php echo $_SESSION['name'];?></td>
  </tr>
  <tr>
    <td colspan="3">sponseres list </td>
    <td><a href="admin.php#sponserForm">+Add new Sponser</a></td>
  </tr>
  <tr>
    <td colspan="3"><?php echo $sponsere_list; ?></td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td align="center" colspan="4"> <a name="sponserForm" id="sponserForm"></a> Add New Sponser Form</td>
  </tr>
  <tr>
    <td align="left">Sponser name</td>
    <td align="left"><input type="text" name="spname" id="spname" tabindex="1" /></td>
    <td colspan="2" align="center">&nbsp;</td>
    </tr>
  <tr>
    <td align="left">Image</td>
    <td align="left"><input type="file" name="fileToUpload" /></td>
    <td colspan="2" align="center">&nbsp;</td>
    </tr>
  <tr>
    <td align="left">Add this</td>
    <td align="left"><input type="submit" name="sumit" id="sumit" value="Submit" tabindex="3" /></td>
    <td colspan="2" align="center">&nbsp;</td>
    </tr>
  <tr>
    <td align="center" colspan="4">&nbsp;</td>
  </tr>
</table>
</form>

这是检索它的 php 代码

<?php 
if(isset($_POST['spname'])){
    $spname=mysql_real_escape_string($_POST['spname']);
    $user_query = "INSERT INTO `sponsers` (`spname`)
                                    VALUES ('{$spname}')
                                    ";
    $sql=mysql_query($user_query)or die (mysql_error());
    $spic= mysql_insert_id();
    $newname="$spic.jpg";
    move_uploaded_file($_FILES["fileToUpload"]["tmp_name"],"../sponsers/$newname")or die (mysql_error());
    }
?>

当我尝试上传图片时,它给了我这个警告信息 注意:未定义索引:第 3 行 J:\xampp\htdocs\srimag\admin\test.php 中的 fileToUpload

所以我尝试使用 $_POST['fileToUpload'] 来回显 fileToUpload 值,它显示的值没有错误,因此无法找出错误。

所以请帮帮我:-( 谢谢。

【问题讨论】:

    标签: php


    【解决方案1】:

    您的主要问题是您的表单上缺少适当的enctype 属性

    <form ... enctype="multipart/form-data">
    

    请务必仔细阅读手册的这一部分 - http://php.net/manual/en/features.file-upload.php

    first page 上提到了您的问题

    注意:

    确保您的文件上传表单具有enctype="multipart/form-data" 属性,否则文件上传将无法正常工作。

    【讨论】:

    • 如果您这么认为,请不要忘记将其标记为最佳答案 @user1367975 :)
    【解决方案2】:

    您需要在表单中使用enctype="multipart/form-data" 来上传图片,最好检查用户是否上传了图片,并且指定文件.jpg 将不起作用,输出时图片将被视为损坏如果不是 jpeg,更不用说上传 php 文件的人了。

    您还需要对有效性进行一些其他检查,上传安全性不应被忽视,否则您有一个可怕的电话主页/僵尸网络恶意软件脚本将代码注入您的所有脚本:

    <?php 
    if(isset($_POST['spname'])){
        $spname=mysql_real_escape_string($_POST['spname']);
        $user_query = "INSERT INTO `sponsers` (`spname`)
                                        VALUES ('{$spname}')";
        $sql=mysql_query($user_query)or die (mysql_error());
        $spic= mysql_insert_id();
    
    
    
        if(isset($_FILES["fileToUpload"]["tmp_name"]) && $_FILES["fileToUpload"]["error"] ==0){
            $name    = basename($_FILES["fileToUpload"]['name']);
            $ext     = end(explode('.', $name));
            $newname = $spic.".".$ext;
            $info    = getimagesize($_FILES["fileToUpload"]['tmp_name']);
    
            $allowed = array('image/png','image/jpg','image/gif');
            if($info[0]>0 && $info[1] > 0 && in_array($info['mime'],$allowed)){
                move_uploaded_file($_FILES["fileToUpload"]['tmp_name'], "../sponsers/$newname");
                //done upload
            }else{
                //Not allowed, perhap notify user
            }
        }
    
    }
    ?>
    

    【讨论】:

      【解决方案3】:

      在表单标签中包含这个

      enctype="multipart/form-data"
      

      【讨论】:

        【解决方案4】:

        你应该在你的表单中添加这个

        <form action="test.php" method="post" name="myform" enctype="multipart/form-data"> 
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-10-01
          • 2011-02-06
          • 2011-03-30
          • 2011-12-08
          • 2011-12-27
          相关资源
          最近更新 更多