PHP图像上传-未定义文件上传

PHP图像上传-未定义文件上传,php,html,image,image-uploading,Php,Html,Image,Image Uploading,我有一个管理员页面,管理员将在表单中插入新产品。我无法上传图像,出现未定义文件上传错误。我需要上传一个图像并将图像名称存储到数据库中 这是我的密码: session_start(); include_once '../inc/config.php'; if(!isset($_SESSION['admin'])) { header('Location: login.php'); exit; } if(isset($_POST['insert'])) { $cname = mysqli

我有一个管理员页面,管理员将在表单中插入新产品。我无法上传图像,出现未定义文件上传错误。我需要上传一个图像并将图像名称存储到数据库中

这是我的密码:

session_start();
include_once '../inc/config.php';

if(!isset($_SESSION['admin']))
{
  header('Location: login.php');
  exit;
}

if(isset($_POST['insert'])) 
{
$cname = mysqli_real_escape_string($connect, $_POST['cname']);
$ccost = mysqli_real_escape_string($connect, $_POST['ccost']);
$ctype = mysqli_real_escape_string($connect, $_POST['ctype']);
$cimage = mysqli_real_escape_string($connect, $_POST['cimage']);
$ccapa = mysqli_real_escape_string($connect, $_POST['ccapa']);
$cstatus = mysqli_real_escape_string($connect, $_POST['cstatus']);

$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);

$check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
if($check !== false) {
    echo "File is an image - " . $check["mime"] . ".";
    $uploadOk = 1;
} else {
    echo "File is not an image.";
    $uploadOk = 0;
}

if (file_exists($target_file)) {
echo "Sorry, file already exists.";
$uploadOk = 0;
}
// Check file size
 if ($_FILES["fileToUpload"]["size"] > 500000) {
 echo "Sorry, your file is too large.";
 $uploadOk = 0;
 }
// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType 
!= "jpeg"
&& $imageFileType != "gif" ) {
echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
$uploadOk = 0;
}
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
echo "Sorry, your file was not uploaded.";
// if everything is ok, try to upload file
} else {
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], 
$target_file)) {
    echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";
} else {
    echo "Sorry, there was an error uploading your file.";
}
}

if(mysqli_query($connect, "INSERT INTO cars(car_name, car_type, image, rent_cost, capacity, status) VALUES
    ('".$cname."', '".$ctype."', '". basename( $_FILES["fileToUpload"]["name"]). "', '".$ccost."', '".$ccapa."', '".$cstatus."')")){
        $success = "<div class='alert alert-success'><strong>Successfully Inserted!</strong></div>";
    }else{
        $errormsg = "<div class='alert alert-danger'>Error inserting item.</div>";
    }
}   
session_start();
包括“../inc/config.php”;
如果(!isset($\u会话['admin']))
{
标题('Location:login.php');
出口
}
如果(isset($_POST['insert']))
{
$cname=mysqli\u real\u escape\u字符串($connect,$\u POST['cname']);
$ccost=mysqli\u real\u escape\u字符串($connect,$\u POST['ccost']);
$ctype=mysqli\u real\u escape\u字符串($connect,$\u POST['ctype']);
$cimage=mysqli\u real\u escape\u字符串($connect,$\u POST['cimage']);
$ccapa=mysqli\u real\u escape\u字符串($connect,$\u POST['ccapa']);
$cstatus=mysqli\u real\u escape\u字符串($connect,$\u POST['cstatus']);
$target_dir=“uploads/”;
$target_file=$target_dir.basename($_FILES[“fileToUpload”][“name”]);
$uploadOk=1;
$imageFileType=pathinfo($target\u文件,pathinfo\u扩展名);
$check=getimagesize($_文件[“fileToUpload”][“tmp_名称]);
如果($check!==false){
echo“文件是图像-”$check[“mime”]。”;
$uploadOk=1;
}否则{
echo“文件不是图像。”;
$uploadOk=0;
}
如果(文件_存在($target_文件)){
echo“抱歉,文件已存在。”;
$uploadOk=0;
}
//检查文件大小
如果($_文件[“fileToUpload”][“size”]>500000){
echo“对不起,您的文件太大了。”;
$uploadOk=0;
}
//允许某些文件格式
如果($imageFileType!=“jpg”&&&$imageFileType!=“png”&&&$imageFileType
!=“jpeg”
&&$imageFileType!=“gif”){
echo“对不起,只允许使用JPG、JPEG、PNG和GIF文件。”;
$uploadOk=0;
}
//检查$uploadOk是否被错误设置为0
如果($uploadOk==0){
echo“抱歉,您的文件未上载。”;
//如果一切正常,请尝试上载文件
}否则{
如果(移动上传的文件($_文件[“fileToUpload”][“tmp_名称”]),
$target(文件){
回显“文件”。已上载basename($\u文件[“fileToUpload”][“name”]);
}否则{
echo“抱歉,上载文件时出错。”;
}
}
if(mysqli_query($connect),“插入到汽车中(汽车名称、汽车类型、图像、租金成本、容量、状态)值
(“%$cname.”、“%$ctype.”、“.”basename($U文件[“fileToUpload”][“name”])。”、“$ccost.”、“$ccapa.”、“$cstatus.”){
$success=“成功插入!”;
}否则{
$errormsg=“插入项目时出错。”;
}
}   
我的HTML代码:



插入项目 车名 租金成本 车型 图像文件 容量 地位 可用 无法使用的 插入
尝试以下操作:

  • enctype=“多部分/表单数据”
    添加到表单标签
  • 请确保您的服务器可以接受POST并上载数据 足够大以容纳文件的大小
  • 提交表单后,请执行
    打印($\u文件)
    ,查看是否
    $\u文件[“fileToUpload”]
    已定义

  • 您需要在表单标记中的
    action=”“
    之后添加
    enctype=“多部分/表单数据”
    。否则发送到服务器的数据将无法识别。

    感谢那些回答我问题的人。我已经解决了我的问题

    • 对于未定义的变量,我只需要将它放在isset($\u POST(['insert'])中
    • 对于PHP上载脚本,我只需要删除:
      $check=getimagesize($_文件[“fileToUpload”][“tmp_名称]);
      如果($check!==false){
      echo“文件是图像-”$check[“mime”]。”;
      $uploadOk=1;
      }否则{
      echo“文件不是图像。”;
      $uploadOk=0;
      }
    • 是的,标记中需要enctype=“multipart/form data”,以便将图像/媒体发布到服务器

    < 1】和2。对于数字3,我还没有提交任何数据,它显示错误,脚本不应该到达文件上传处理的块,除非ISSET($xPo[(插入)])是真的。你能回复你所看到的确切PHP错误吗?也可以考虑打印一个PrtutYR。($\u请求)显示在脚本顶部,以监视脚本获得的输入。