1

我正在尝试上传图像并将其存储在数据库中。我已经提到了代码,但它对我不起作用。我无法找到错误。看看有没有人能找到bug。代码是:

<?php

$name=$_REQUEST['name'];
$email=$_REQUEST['email'];

if($_REQUEST['submit'])
{
    if(($_FILES['file']['type']=="image/jpeg" or $_FILES['file']['type']=="image/pjpeg" or $_FILES['file']['type']=="image/gif") and ($_FILES['file']['size']<300000))
    {
        if($_FILES['file']['error']>0)
        {
            $err=" ERROR :: ".$_FILES['file']['error'];
        }
        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']."<br/>";

            move_uploaded_file($_FILES['file']['tmp_name'],"upload/".$_FILES['file']['name']);
            echo $_FILES['file']['name'];
            echo $_FILES['file']['tmp_name']."qwerty";

            $n=3000;
            $fo=fopen("upload/".$_FILES['file']['name'],"r");
            $fr=fread($fo,$n);

            mysql_query("update user set pic='$fr' where id='$id'");

        }
    }
    else
    {
        $err=" ERROR :: Invalid Image";
    }

    mysql_query("update user set name='$name' where id='$id'");
    mysql_query("update user set email='$email' where id='$id'");


}

$sql="select * from user where id='$id'";
$con=mysql_query($sql);
list($idR,$nameR,$emailR,$pwdR,$dateR,$picR)=mysql_fetch_array($con);

?>



<body>
<form action="" method="post" enctype="multipart/form-data">

    <table>
        <tr>
            <td colspan="2"><?php echo $err; ?></td>
        </tr>
        <tr>
            <td>Name:</td>
            <td><input type="text" name="name" value="<?php echo $nameR ?>" /></td>
        </tr>
        <tr>
            <td>Email:</td>
            <td><input type="text" name="email" value="<?php echo $emailR ?>" /></td>
        </tr>
        <tr>
            <td><label for="file">Upload or Change Pic:</label></td>
            <td><input type="file" name="file" id="file" /></td>
        </tr>
        <tr>
            <td colspan="2"><input type="submit" name="submit" value="Save"/></td>
        </tr>

    </table>    
</form>
</body>

我的代码甚至无法上传文件。当我尝试echo以下操作时,我发现它们是空的:

   echo "Name:".$_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'];

以上所有字段均为空。

4

5 回答 5

1

我不知道这是如何工作的,但它没有奏效。我想问题出在我的HTML代码中,因为这些$_FILES值是无/空的。它不是从表单标签中检索值,请检查我的答案是否不正确以解决问题或纠正如何从科学或计算机中的其他学科解决这个难题,它形成错误或成功。

于 2012-10-31T04:15:37.417 回答
0

试试这个!

<?php

if(isset($_POST['submit']) && $_FILES['file']['size'] > 0)
{
    // Data
    $file_name = $_FILES['file']['name'];
    $tmp_name  = $_FILES['file']['tmp_name'];
    $file_size = $_FILES['file']['size'];
    $file_type = $_FILES['file']['type'];

    // Check
    $type   = array(
        'image/jpeg',
        'image/gif',
        'image/png',
    );
    $size   = 300000;

    if(in_array($file_type, $type) AND $file_size > $size)
    {
        echo 'Ooops! File type must be JPG, GIF or PNG. Or file size too big';
        exit();
    }

    // Is error?
    if ($_FILES["file"]["error"] > 0)
    {
        echo 'Upload Error';
        exit();
    }
    else
    {
        echo 'File Name : '.$file_name.'<br />';
        echo 'File Size : '.($file_size / 1024).' Kb<br />';
        echo 'File Type : '.$file_type;
    }
} 
?>

<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="file" id="file" />
<input type="submit" name="submit" value="Save"/>  
</form>
于 2012-06-21T05:20:53.420 回答
0

如果 $_POST 和 $_FILES 都是空的,那么你已经超过了最大帖子大小 ini ('post_max_size')

php.ini 中有几个设置,包括单个文件的最大值('upload_max_filesize')和所有上传的最大值('post_max_size')。确保这些 ini 设置设置正确

如果您已经编辑过,请注意语法,在处理 M、K 或 G(不是 KB、MB 或 GB)时会很挑剔,并且不要超过服务器的位大小,即不要超过 40 亿字节32 位服务器。


$_FILES 为空的其他原因,但不是 $_POST。您没有足够的可用空间来上传文件,或者您没有写入临时目录的权限。检查 /tmp 是否有足够的空间,并且您可以以 apache/php 用户的身份对其进行写入。

于 2012-06-21T05:53:05.607 回答
-1

当我将我的代码移到一个独立的 .php 文件上时,它起作用了。当我需要上传时,我提供了指向编写独立​​上传代码的页面的链接。我不知道这背后的原因,但这就是我解决它的方法。

于 2013-08-09T15:15:29.230 回答
-2

嗯....尝试更改此行

if($_REQUEST['submit'])

成为

if(isset($_REQUEST['submit']))

我认为,这段代码

if(($_FILES['file']['type']=="image/jpeg" or $_FILES['file']['type']=="image/pjpeg" or $_FILES['file']['type']=="image/gif") and ($_FILES['file']['size']<300000))

可以简化为

if(ereg("jpeg|pjpeg|jpg|gif|png", $_FILES['file']['type']) AND $_FILES['file']['size']<300000)

祝你好运...

于 2012-06-21T05:05:08.983 回答