用户上传图片到网站然后显示在图库中
Users upload images to website and then is displayed in gallary
所以我建立了一个管理面板,我希望能够上传图像,将图像文件的名称更改为一个数字 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...");
}
}
请问您为什么要将文件重命名为与其所在行相关的数字?
您使一项简单的任务变得非常复杂。
你不应该将图像存储在你的数据库中,你应该将它们上传到你站点中的一个目录并将相应的名称存储在数据库中。
不过,我不明白将名称更改为数字的全部原因,这只会把一切搞得一团糟。
你应该做这样的事情。
在您的配置文件中创建一个目录路径..
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));
}
}
然后你可以简单地做这样的事情来插入数据库。
$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}')");
所以我建立了一个管理面板,我希望能够上传图像,将图像文件的名称更改为一个数字 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...");
}
}
请问您为什么要将文件重命名为与其所在行相关的数字? 您使一项简单的任务变得非常复杂。 你不应该将图像存储在你的数据库中,你应该将它们上传到你站点中的一个目录并将相应的名称存储在数据库中。
不过,我不明白将名称更改为数字的全部原因,这只会把一切搞得一团糟。
你应该做这样的事情。
在您的配置文件中创建一个目录路径..
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));
}
}
然后你可以简单地做这样的事情来插入数据库。
$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}')");