Php 图像上传表单不支持';我不能在网上工作

Php 图像上传表单不支持';我不能在网上工作,php,mysql,database,upload,xampp,Php,Mysql,Database,Upload,Xampp,我在本地主机上运行了一个基于HTML/PHP的工作站点(使用XAMPP)。但是当我把它转移到一个实时服务器上时,有一部分不想工作。。图片上传。localhost和live上的数据库几乎相同。所有其他使用数据库的东西都很好。我只是不能上传图片 这是我用于上传的代码: <?php include 'includes/header.php'; ?> <br /><br /> <form action="image.php" m

我在本地主机上运行了一个基于HTML/PHP的工作站点(使用XAMPP)。但是当我把它转移到一个实时服务器上时,有一部分不想工作。。图片上传。localhost和live上的数据库几乎相同。所有其他使用数据库的东西都很好。我只是不能上传图片

这是我用于上传的代码:

    <?php 
include 'includes/header.php';
    ?>
    <br /><br />
    <form action="image.php" method="POST" enctype="multipart/form-data">
        <input type="file" name="image">
        <br /><br />
        <input type="submit" name="submit" value="Upload">
    </form>

    <?php


        if(isset($_POST['submit']))
        {

        include 'includes/connection.php';

        $imageName = mysql_real_escape_string($_FILES["image"]["name"]);
        $imageData = mysql_real_escape_string(file_get_contents($_FILES["image"]["tmp_name"]));
        $imageType = mysql_real_escape_string($_FILES["image"]["type"]);

        if(substr($imageType,0,5) == "image")
        {
            mysql_query("INSERT INTO `blob` VALUES('','$imageName','$imageData' )");
            echo "Plaatje opgeslagen";
        }
        else{
            echo "alleen plaatjes";
        }
        }
        ?>      
</body>





PHP 5.5.0中不推荐使用mysql_query()函数。要研究的一个较新标准是内置在PHP中的PDO驱动程序

另外,某些人目前的最高职位是

您最好仔细检查$\u文件的结构和值。 以下代码绝对不会导致任何错误

例如:
header('Content-Type: text/plain; charset=utf-8');

try {

// Undefined | Multiple Files | $_FILES Corruption Attack
// If this request falls under any of them, treat it invalid.
if (
    !isset($_FILES['upfile']['error']) ||
    is_array($_FILES['upfile']['error'])
) {
    throw new RuntimeException('Invalid parameters.');
}

// Check $_FILES['upfile']['error'] value.
switch ($_FILES['upfile']['error']) {
    case UPLOAD_ERR_OK:
        break;
    case UPLOAD_ERR_NO_FILE:
        throw new RuntimeException('No file sent.');
    case UPLOAD_ERR_INI_SIZE:
    case UPLOAD_ERR_FORM_SIZE:
        throw new RuntimeException('Exceeded filesize limit.');
    default:
        throw new RuntimeException('Unknown errors.');
}

// You should also check filesize here. 
if ($_FILES['upfile']['size'] > 1000000) {
    throw new RuntimeException('Exceeded filesize limit.');
}

// DO NOT TRUST $_FILES['upfile']['mime'] VALUE !!
// Check MIME Type by yourself.
$finfo = new finfo(FILEINFO_MIME_TYPE);
if (false === $ext = array_search(
    $finfo->file($_FILES['upfile']['tmp_name']),
    array(
        'jpg' => 'image/jpeg',
        'png' => 'image/png',
        'gif' => 'image/gif',
    ),
    true
)) {
    throw new RuntimeException('Invalid file format.');
}

// You should name it uniquely.
// DO NOT USE $_FILES['upfile']['name'] WITHOUT ANY VALIDATION !!
// On this example, obtain safe unique name from its binary data.
if (!move_uploaded_file(
    $_FILES['upfile']['tmp_name'],
    sprintf('./uploads/%s.%s',
        sha1_file($_FILES['upfile']['tmp_name']),
        $ext
    )
)) {
    throw new RuntimeException('Failed to move uploaded file.');
}

echo 'File is uploaded successfully.';

} catch (RuntimeException $e) {

echo $e->getMessage();

}

?>
他的代码是我选择验证和存储文件的方式。请注意,他没有将图像存储在数据库中,而是将其上载到名为uploads的文件中的服务器/

然后,您可以将此文件路径存储在数据库列中,并在需要时检索它

希望这能有所帮助。

一些注意事项:

  • 您可能希望更新以使用mysqli或PDO_MYSQL,因为从PHP7开始,MYSQL功能被删除

  • 永远不要信任表单数据(例如$_文件[“image”][“type”]),因为它不可靠

  • 可能需要检查图像大小,以便人们不会将大量图像上载到您的数据库中

尝试类似以下内容:

HTML:


选择要上载的图像:
PHP:


您是否尝试检查您的PHP错误日志?请检查live中的PHP版本。检查
mysqli
PDO
,因为在
PHP7
mysql.*
中已删除。
<form action="image.php" method="post" enctype="multipart/form-data">
Select image to upload: <input type="file" name="imageUpload" id="imageUpload">
<input type="submit" value="Upload Image" name="submit">
</form>
<?php
$imageTypes = ['png', 'jpg', 'gif'];
if($_POST["submit"] == 'Upload Image')
{
    $fileExt = pathinfo($_FILES['imageUpload']['tmp_name'], PATHINFO_EXTENSION);
    if(!in_array($fileExt, $imageTypes))
        throw new Exception("Invalid upload type we only accept: " . implode(", ", $imageTypes)).
    else
    {
        $imageStr = mysql_real_escape_string(file_get_contents($_FILES['imageUpload']['tmp_name']));
        $imgName = mysql_real_escape_string($_FILES["imageUpload"]["name"]);
        mysql_query("INSERT INTO `blob` VALUES('','$imgName','$imageStr' )");
    }
}