-1

我想将图像上传到 php 数据库,我的 php 代码

<?php
session_start();
include('../../includes/connect.php');

$title = $_POST['title'];
$subject = $_POST['subject'];
$file = $_FILES['image']['tmp_name'];
$image = addslashes(file_get_contents($_FILES['image']['tmp_name']));
$image_size = getimagesize($_FILES['image']['tmp_name']);
$visiable = 1;

$query = "insert into news (title, subject, image, visiable) values ('$title','$subject', '$image', '$visiable')"; 
$result = mysql_query($query);
$id = mysql_insert_id();

$data = array(
        'id' => $id
        );
$base = '../../show.php';
$url = $base. '?' . http_build_query($data);
header("Location: $url");
exit();?>

但它什么也没上传图像字段仍然是0字节,昨天它对我有用,但今天我不知道发生了什么,我希望有人能帮助我,对不起我的英语不好

4

1 回答 1

1

这是我为使用您的表结构而修改的脚本。

function addImageToDB($imageArray, $title = '', $subject = '', $visible = 0) {

$allowedExts = array("gif","jpeg","jpg","JPG","png","PNG");
$extension = end(explode(".", $imageArray["name"]));

if (
    (($imageArray["type"] == "image/gif") // is image type acceptable?
        || ($imageArray["type"] == "image/jpeg")
        || ($imageArray["type"] == "image/jpg")
        || ($imageArray["type"] == "image/png")
    )
    && ($imageArray["size"] < 1048576) // set maximum image size
    && in_array($extension, $allowedExts) // is image file extension in $allowedExts?
) {

    if ($imageArray["error"] > 0) { // check uploaded image for errors
        echo $imageArray['error'];
    } else {

        $tempImage = $imageArray['tmp_name'];
        $fp = fopen($tempImage, 'r');
        $image = fread($fp, filesize($tempImage));
        $image = addslashes($image);
        fclose($fp);

        $queryAddImageToDB = "INSERT INTO image (
            title,
            subject,
            image,
            visible
        ) VALUES (
            '$title'
            '$subject',
            '$image',
            '$visible'
        )";

        mysql_query ($queryAddImageToDB) or die ('queryAddImageToDB failed');
        $imageID = mysql_insert_id();

        return $imageID;

    }
} else {

    echo 'IMAGE UPLOAD ERROR: The image ie either too large or the file format is unacceptable.';

    echo '<pre>';
        print_r($imageArray); // display image array for debugging
    echo '</pre>';

}

}

您可以像这样调用该函数:

$imageArray = $_FILES['image'];
$title = $_POST['title'];
$subject = $_POST['subject'];
$visible = 1;
addImageToDB($imageArray, $title, $subject, $visible);

请注意,此脚本不完整,因为它需要适当的验证、转义等。

祝你好运,我希望这对你有用,我期待听到其他反馈。

于 2013-07-30T02:15:03.020 回答