Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何上载图像并将其存储在数据库中?_Php_File Upload - Fatal编程技术网

Php 如何上载图像并将其存储在数据库中?

Php 如何上载图像并将其存储在数据库中?,php,file-upload,Php,File Upload,我正试图上传一个图像并将其存储在数据库中。我提到了代码,但它对我不起作用。我找不到窃听器。请看看是否有人能找到这个bug。 代码是: <?php $name=$_REQUEST['name']; $email=$_REQUEST['email']; if($_REQUEST['submit']) { if(($_FILES['file']['type']=="image/jpeg" or $_FILES['file']['type']=="image/pjpeg" or $_F

我正试图上传一个图像并将其存储在数据库中。我提到了代码,但它对我不起作用。我找不到窃听器。请看看是否有人能找到这个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>
以上所有字段均为空。

嗯。。。。 试着改变这一行

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))
如果($\u文件['file']['type']==“image/jpeg”或$\u文件['file']['type']==“image/pjpeg”或$\u文件['file']['type']==“image/gif”)和($\u文件['file']['size']试试这个

<?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>

如果$\u POST和$\u文件均为空,则您已超过最大POST大小ini('POST\u max\u size'))

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

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



$\u文件为空,但不是$\u POST的其他原因。您没有足够的可用空间上载文件,或者您没有写入临时目录的权限。请检查/tmp是否有足够的空间,并且您可以作为apache/php用户写入它。

我不知道这是如何工作的,但它没有工作。我想问题出在我的中的某个地方e> HTML
code,因为
$\u文件
值为无/空。它不是从表单标签中检索值。请检查我的答案是否不正确,以解决问题,或者更正如何解决科学或计算机中的其他主题中的这一难题,并且它的表单已出错或成功。

当我移动我的code在一个独立的.php文件上。当我需要上传时,我给了那个页面的链接,其中写了独立上传代码。我不知道这背后的原因,但我就是这样解决的。

文件是否少于300K?我还建议您打印($文件)最好将图像路径存储在数据库中,图像存储在另一个文件夹或位置是的,文件小于300K@Robbie…..我甚至没有将图像存储在文件夹中(文件夹名称:upload,如代码中所述)…如果我将图像存储在文件夹中,那么我可以按照您的建议@vikrantx
print\r($\u文件)
在您的情况下它会产生什么结果?文件夹
上传
是否设置了必要的权限?我按照您的建议进行了尝试…但没有成功。我想问题出在我的html代码中的某个地方,因为$\u文件的值是空的…它没有从表单标记中检索值…请检查是否发现错误。。。“弃用”意味着PHP5.3.0不再支持该函数因为不再存在。$\u POST不是空的…这里可能不会出现权限或缺少可用空间的情况,因为当我在一个单独的php文件中上载图像时,我已经编写了类似的上载代码,但没有上面代码中提到的其他更新,我的图像将与该单独的文件一起上载。但不会与上面的代码一起上载代码似乎没有问题(我可以看到)您还说其他示例可以工作-所以服务器很好。那么,这就是您的全部代码,而不是编辑的吗?现在最可能的问题是您已经从真实源代码编辑到上面的工作版本。检查原始源代码中是否存在enctype,检查您是否只有一个开始元素和一个“name=”文件“输入等等。这就是我所能想到的。如果公开提供(html部分,而不是php),你能发布一个链接吗?上面的代码正是我在服务器上运行的代码…html部分在我发布的上面的代码中…绝对难懂。那么,我唯一的‘最后喘息’是建议在“操作”中添加一个URL,但看不出这会有什么帮助。所以我称之为“回到第一原则”-在服务器上的其他地方使用一些代码,在这里检查是否有效,然后一次编辑一行,直到获得所需的代码。然后比较差异。抱歉-您的代码很好(除非我们都缺少它)所以真的没有其他建议。当我把我的代码移动到一个独立的
.php
文件上时,它起作用了。当我需要上传时,我给了那个页面的链接,独立上传代码就是在其中编写的。我不知道这背后的原因,但我就是这样解决的。我不明白你想说什么。我请求无论谁对这个答案投了赞成票,请试着向我解释一下。
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)
<?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>