无法在PHP中上传文件

时间:2014-02-18 11:32:06

标签: php mysqli

我尝试上传图片,但无效。我设置的其他变量被插入到数据库中,但是图像文件不是......我试图用isset检查提交,但它不起作用。我的错误在哪里?

感谢您的帮助。

PHP文件:

<?php

include ('includes/config.php'); 
$mysqli =  new mysqli(DB_SERVER,DB_UNAME,DB_PASSWD,DB_NAME);
if($mysqli->connect_errno) {
    echo "MYSQLI connect error no {$mysqli->connect_errno} : {$mysqli->connect_error}";
    die();
}

$itemcode  = $_POST['icode'];
$itemname  = $_POST['iname'];
$brandname = $_POST['brandname'];
$upload    = basename ($_FILES['upload']['name']);
$path = "img/";

if(!empty($upload)) {
    $i1 = strrpos($upload,".");
    if (!$i1) { 
        return ""; 
    }
    $l1 = strlen($upload) - $i1;
    $ext1 = substr($upload,$i1+1,$l1);
    $ext1 = strtolower($ext1);
    $news_name1=time()+(1).'.'.$ext1;
    $newname1 = $path.$news_name1;
    $copied1 = copy($_FILES['upload']['tmp_name'], $newname1);
} else {
    $news_name1 = '';
}

$iadd = $mysqli->prepare("INSERT INTO table_item (`itemcode`,`itemname`,`brandname`,`upload`) VALUES ('".$itemcode."', '".$itemname."','".$brandname."','".$news_name1."')  ");
$iadd->execute();
$iadd->close();
$mysqli->close();

?>

这是我的HTML文件:

  <form class="cmxform form-horizontal tasi-form" name="form2" id="form2" method="post" action="">
      <div class="form-group ">
      <label for="icode" class="control-label col-lg-2">Item Code</label>
          <div class="col-lg-10">
              <input class=" form-control" id="icode" name="icode" type="text" />
          </div>
      </div>
      <div class="form-group ">
          <label for="iname" class="control-label col-lg-2">Item Name</label>
          <div class="col-lg-10">
              <input class=" form-control" id="iname" name="iname" type="text" />
          </div>
      </div>                                
      <div class="form-group ">
          <label for="brandname" class="control-label col-lg-2">Brand Name</label>
          <div class="col-lg-10">
              <input class=" form-control" id="brandname" name="brandname" type="text" />
          </div>
      </div>
      <fieldset style="width:48%; float:left;"> <!-- to make two field float next to one another, adjust values accordingly -->
          <label>Doc 2</label>
          <input style="margin: 0 10px;" type="file" name="upload" size="50">
      </fieldset>   

3 个答案:

答案 0 :(得分:1)

将“enctype =”multipart / form-data“'添加到表单标记属性中,您可以阅读有关文件上传here的更多信息。 另外请考虑检查帖子的值,因为您当前的方法可以获得sql injections

答案 1 :(得分:1)

添加表单属性enctype =“multipart / form-data”

答案 2 :(得分:0)

您没有使用正确的语法,也使用'enctype="multipart/form-data"'。 我已经实现了你的代码

<?php

    include ('includes/config.php');

    $mysqli =  new mysqli(DB_SERVER,DB_UNAME,DB_PASSWD,DB_NAME);

    if($mysqli->connect_errno){

        echo "MYSQLI connect error no {$mysqli->connect_errno} : {$mysqli->connect_error}";
        die();
    }
    $itemcode  = $_POST['icode'];
    $itemname  = $_POST['iname'];
    $brandname = $_POST['brandname'];
    $upload    = basename ($_FILES['upload']['name']);
    $path = "img/";

      if(!empty($upload)){
            $i1 = strrpos($upload,".");
            if (!$i1) { return ""; }
            $l1 = strlen($upload) - $i1;
            $ext1 = substr($upload,$i1+1,$l1);
            $ext1 = strtolower($ext1);
            $news_name1=time()+(1).'.'.$ext1;
            $newname1 = $path.$news_name1;
            $copied1 = $_FILES['upload']['tmp_name'], $newname1;
        }else{
            $news_name1 = '';
        }

    $iadd = $mysqli->prepare("INSERT INTO table_item (`itemcode`,`itemname`,`brandname`,`upload`) VALUES ('".$itemcode."', '".$itemname."','".$brandname."','".$news_name1."')  ");
    $iadd->execute();
    $iadd->close();
    $mysqli->close();

    ?>