用户将图像上传到网站,然后以gallary方式显示

时间:2017-03-16 10:06:23

标签: php mysql image upload gallery

所以我构建了一个管理面板,我希望能够上传图像,将图像文件的名称更改为数字ID,该数字ID由数据库中已有的行数生成。然后将它们显示在访客的画廊中。我已经浏览了几天互联网,尝试不同的脚本,混合和匹配,但似乎没有任何作用。这是PHP顺便说一句。我相信问题是move_uploaded_file()函数。如果有人能想到更好的方法或者在我的代码中发现错误,那就太棒了。该网站是为客户提供的,因此对于及时回复会更感谢。谢谢你们

require_once("../php/connect.php");

function GetImageExtension($imagetype){
    if(empty($imagetype)) return false;
    switch($imagetype){
        case 'image/png': return '.png';
        default: return false;
    }
}

if (!empty($_FILES['fileToUpload']['name'])){
    $file_name = $_FILES['fileToUpload']['name'];
    $temp_name = $_FILES['fileToUpload']['tmp_name'];
    $imgtype = $_FILES['fileToUpload']['type'];
    $ext = GetImageExtension($imgtype);

    $query1 = "SELECT COUNT(*) FROM gal";
    $count = mysqli_query($dbc, $query1);

    $imagename = $count + 0;
    $newfilename = "$imagename" . ".png";

    //Debug
    echo "hello <br>";
    echo "$newfilename";
    //End Debug

    $folder = "/uploads/";
    if(move_uploaded_file($_FILES['image']['tmp_name'], "$folder" . $_FILES['image']['$newfilename'])){
        $query2 = "INSERT INTO `nocas_19164639_admin`.`gal` (`id`, `name`, `active`) VALUES (NULL, '$newfilename', '1')";
        mysqli_query($dbc, $query2);
    }else{
        exit("Error while uploading file...");
    }
}

1 个答案:

答案 0 :(得分:0)

我可以问你为什么要将文件重命名为与其所在行相关的数字? 你做一个简单的任务非常复杂。 您不应将图像存储在数据库中,应将它们上载到站点中的目录并将相应的名称存储在数据库中。

我不明白将名称更改为数字的全部原因,但它只是弄乱了所有内容。

你应该做这样的事情。

在配置文件中创建目录路径..

defined("UPLOAD_DIRECTORY") ? null : define("UPLOAD_DIRECTORY", __DIR__ . DS . "uploads");

我已经为mysqli查询创建了一个函数,所以我不必一直输出它。

function query($sql) {

global $connection;

return mysqli_query($connection, $sql);
}

然后我有一个确认查询,检查查询错误。

function confirm($result) {

global $connection;

if(!$result) {

    die("QUERY FAILED" . mysqli_error($connection));
}
}

然后你可以简单地做这样的事情来插入db。

$product_image = escape_string($_FILES['file']['name']);
    $image_temp_location = $_FILES['file']['tmp_name'];

    move_uploaded_file($image_temp_location, UPLOAD_DIRECTORY . DS . $product_image);

    $query = query("INSERT INTO products(product_image) VALUES( '{$product_image}')");