所以我构建了一个管理面板,我希望能够上传图像,将图像文件的名称更改为数字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...");
}
}
答案 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}')");